子shell中的变量内的引号

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中执行(在后台处理和不处理).

iru*_*var 5

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

尝试(eval "$cmd" | sort) &代替