3

所以这是我遇到的一个奇怪的问题;我有一个脚本,它试图构建一组通过 运行的命令eval,这些命令需要在子 shell 中作为一系列其他命令的一部分运行(这样我就可以异步运行它们)。这些命令包括引号以保护带有空格等的值,但是它们被视为根本不存在引号。

例如:

cmd="echo 'Foo Bar'"
$(eval "$cmd" | sort) &

结果“Foo:找不到命令”的错误

虽然更直接地运行它可以正常工作,如下所示:

eval "$cmd" | sort

我意识到这个例子不是很有趣,但我不明白为什么引号会丢失以及如何避免它,同时仍然在适当的子 shell 中执行(在后台处理和不处理)。

4

1 回答 1

5

您需要删除$,$(eval "$cmd" | sort) &导致 bash 尝试执行命令替换的输出

试试(eval "$cmd" | sort) &

于 2014-05-09T19:07:13.717 回答