将 shell 脚本的字符串结果作为一组 shell 命令执行

将 shell 脚本的字符串结果作为一组 shell 命令执行

我从 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

您可以通过管道将结果传递给àwkto bash

awk '{print "mail -s \"welcome\"", $1}' file_a | bash

但要小心第一个命令的输出,好像file_a包含一些棘手的行,您可能会执行不需要的命令。

相关内容