シェルスクリプトの文字列結果をシェルコマンドセットとして実行します。

シェルスクリプトの文字列結果をシェルコマンドセットとして実行します。

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トリッキーな行が含まれているため、不要なコマンドを実行することもできます。

関連情報