Har*_*ikk 3 shell quotes subshell
所以这是我遇到的一个奇怪的问题; 我有一个脚本试图构建一组命令来运行eval,这些脚本需要作为一堆其他命令的一部分在子shell中运行(所以我可以异步运行它们).这些命令包括用于保护内部空间等值的引用,但是它们被视为引文根本不存在.
例如:
cmd="echo 'Foo Bar'"
$(eval "$cmd" | sort) &
Run Code Online (Sandbox Code Playgroud)
结果出现"Foo:command not found"的错误
虽然运行它更直接工作得很好 - 所以:
eval "$cmd" | sort
Run Code Online (Sandbox Code Playgroud)
我意识到这个例子不是很有趣,但我不明白的是为什么报价丢失以及如何避免它,同时仍然在适当的子shell中执行(在后台处理和不处理).