这里我遇到了一个奇怪的问题:我有一个脚本试图通过
eval
构建一组命令,并且这些命令需要在子shell中运行作为其他命令的一部分(以便可以异步运行它们)。这些命令包括引号来保护值,例如包含空格等。但是它们被视为没有引号。
例如:
cmd="echo 'Foo Bar'"
$(eval "$cmd" | sort) &
执行时出现错误:"Foo: command not found"
直接运行则正常,如下所示:
eval "$cmd" | sort
我知道这个例子并不是很有趣,但是我不理解为什么引号会丢失,以及如何避免它,同时还能在一个合适的子shell中执行(无论是否在后台处理)。