2017-05-17 18 views
0

実行したいスクリプトの入力としてパイプ引数を指定する方法はありますか?例えば、私は、このコマンドスクリプトの入力としてパイプの引数出力を指定する方法はありますか?

を試してみました:

ls -1U | grep "txt" | ./my script.bash 

&hellipを。パイプされた後の出力は、次のように実行されることを期待しています。

./myscript.bash a.txt 

./myscript.bash b.txt 

…等々。

ここで引数を指定する方法を教えてもらえますか?

答えて

2

あなたの現在のコマンドでxargsを使用することができます。

ls -1U | grep txt | xargs -n 1 ./my_script.bash 

しかし、最善の解決策は、findでコマンド全体を交換することである。

find . -name '*.txt' -exec ./my_script.bash {} \; 

それが出力を解析回避できるので、これは良いですlsのエラーが発生しやすいプロセスです。

どちらの場合も、./my_script.bashコマンドはレコードで1回実行されます。複数のファイルを引数としてスクリプトを呼び出す場合は、xargs実行から-n 1を削除するか、実行の\;+に置き換えます。

0

Case1。外部プログラム

for filename in *.txt;do 
    ./my_script.bash "$filename" 
done 

ケース2には依存しません。は子プロセスに存在する変数ファイル名(サブシェル)

ls -1U | grep txt | while read filename;do 
    ./my_script.bash "$filename" 
done 

ケース3:パイプの使用。パイプの使用:変数のファイル名が現在のプロセスに存在します