Bash脚本如何从变量中执行命令

4

我试图修改下面的Bash函数,以执行每个命令参数。但是当我运行这个脚本时,第一个echo按预期工作,但尝试追加到scratch.txt文件的第二个echo实际上并没有执行。它只是被回显到提示符中。

#!/bin/sh
clear

function each(){
  while read line; do
    for cmd in "$@"; do
      cmd=${cmd//%/$line}
      printf "%s\n" "$cmd"
      $cmd
    done
  done
}

# pipe in the text file and run both commands
# on each line of the file
cat scratch.txt | each 'echo %' 'echo -e "%" >> "scratch.txt"'

exit 0

我该如何使$cmd变量作为命令执行?
我在这里找到了答案2的原始代码: 使用xargs运行多个命令
1个回答

6
你想要使用eval。它是邪恶的,或者至少是危险的。在BashFAQ #48中可以阅读有关它的所有信息。

关于“您想要 eval”的问题:您是指“您不想要 eval”吗?还是“您想要 eval,但是……”?或者是其他什么意思? - Peter Mortensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接