所以这是我遇到的一个奇怪的问题;我有一个脚本,它试图构建一组通过 运行的命令eval
,这些命令需要在子 shell 中作为一系列其他命令的一部分运行(这样我就可以异步运行它们)。这些命令包括引号以保护带有空格等的值,但是它们被视为根本不存在引号。
例如:
cmd="echo 'Foo Bar'"
$(eval "$cmd" | sort) &
结果“Foo:找不到命令”的错误
虽然更直接地运行它可以正常工作,如下所示:
eval "$cmd" | sort
我意识到这个例子不是很有趣,但我不明白为什么引号会丢失以及如何避免它,同时仍然在适当的子 shell 中执行(在后台处理和不处理)。