2016-06-24 7 views
2

機能のbashの呼び出しで引用符で問題:私はこのような程度のラウンドに見える小さなbashスクリプトを書いた

私は何をしたいのか
VAR1="test" 
VAR2="test2" 

letsDoSomeStuff() { 
echo $1 
echo $2 
echo $3` 
} 



fswatch -0 . | xargs -0 -n 1 -I {} bash -c 'letsDoSomeStuff {} "$VAR1 $VAR2"' 

、フォルダ内の変化を見ることであるが(経由swatch)を実行し、bashスクリプトの関数で変更されたファイルを使って作業をします。残念ながら、$ VAR1と$ VAR2を引数として渡す必要があります。なぜなら、xargs呼び出しに「生き残る」ことができないからです。

bashスクリプトは正常に動作します。ただし、$ VAR1と$ VAR2は関数に正しく渡されません。スクリプトを起動すると、変更されたファイルごとに出力されます:

filename 
empty line 
empty line 

ここで誰かがこの呼び出しで私を助けることができますか?私は一重引用符と二重引用符を混乱させていると思いますが、正しい方法を見つけることはできません。事前に

おかげ

ノルベルト

+0

は1つのトークンにそれらを回すので、 letsDoSomeStuffへの単一の引数とみなされます。 –

答えて

2

あなたの関数呼び出しにパラメータを渡す必要があります。単一引用符で一緒に$ VAR1と$ VAR2を持つ

fswatch -0 . | 
xargs -0 -n 1 -I {} bash -c 'letsDoSomeStuff "$1" "$2" "$3"' - {} "$VAR1" "$VAR2" 
+0

すごいよ。できます!私は - しかし、残していた。私の解決策はfswatch -0です。 | xargs -0 -n 1 -I {} bash -c 'letsDoSomeStuff "$ 1" "$ 2" "$ 3"' {} "$ VAR1" "$ VAR2" – Norbert

+0

はい、 '$ 0 'を設定する' ' – anubhava

関連する問題