所以这是我遇到的一个奇怪的问题;我有一个脚本尝试构建一组命令来运行eval
,这些脚本需要在子shell中运行,作为一堆其他命令的一部分(所以我可以异步运行它们) )。这些命令包括用于保护内部空间等值的引用,但是它们被视为根本没有引用。
例如:
cmd="echo 'Foo Bar'"
$(eval "$cmd" | sort) &
导致错误" Foo:找不到命令"
虽然更直接地运行它可以正常工作:
eval "$cmd" | sort
我意识到这个例子并不是很有趣,但我不明白为什么报价丢失以及如何避免报价,同时仍然在适当的子壳中执行(有和没有在后台处理)。
答案 0 :(得分:5)
您需要删除$
,$(eval "$cmd" | sort) &
导致bash尝试执行command substitution
尝试使用(eval "$cmd" | sort) &