我从 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]
所以我想将结果作为一组 shell 命令来执行。
答案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
to bash
:
awk '{print "mail -s \"welcome\"", $1}' file_a | bash
但要小心第一个命令的输出,好像file_a
包含一些棘手的行,您可能会执行不需要的命令。