myから文字列の結果を生成し、shell script
それをshell command
。
例えばfile_a
:
[email protected]
[email protected]
スクリプト:
awk '{print "mail -s \"welcome\"", $1}' file_a
結果:
mail -s "welcome" [email protected]
mail -s "welcome" [email protected]
それで、結果を一連のシェルコマンドで実行したいと思います。
答え1
evalコマンドを見たいです。
eval $(awk '{print "mail -s \"welcome\"", $1}' file_a)
編集する: あなたは正しいです@manatwork --evalは、私が証明したように、いくつかの行では実際には動作しません。私はNavidが尋ねる質問に答えようとしていますが、実際になぜ彼がforループを使用しないのかを尋ねることを恐れてはいけません。つまり:
for m in $(<file_a); do mail -s welcome $m
答え2
いくつかの方法があります:
- awkの出力をファイルに書き込み、ファイルを実行可能にしてから実行します。
- awkスクリプトでsystem()関数を使用する:
答え3
Bashから直接コマンドを読み取り、実行します。
for i in `<file_a`; do mail -s "welcome" $i; done
答え4
結果をàwk
次にパイプできますbash
。
awk '{print "mail -s \"welcome\"", $1}' file_a | bash
ただし、最初のコマンドの出力に注意してください。これにはfile_a
トリッキーな行が含まれているため、不要なコマンドを実行することもできます。