子shell中的变量内的引号

时间:2014-05-09 19:00:47

标签: shell quotes subshell

所以这是我遇到的一个奇怪的问题;我有一个脚本尝试构建一组命令来运行eval,这些脚本需要在子shell中运行,作为一堆其他命令的一部分(所以我可以异步运行它们) )。这些命令包括用于保护内部空间等值的引用,但是它们被视为根本没有引用。

例如:

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

导致错误" Foo:找不到命令"

虽然更直接地运行它可以正常工作:

eval "$cmd" | sort

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

1 个答案:

答案 0 :(得分:5)

您需要删除$$(eval "$cmd" | sort) &导致bash尝试执行command substitution

的输出

尝试使用(eval "$cmd" | sort) &