用输出替换字符串中的命令

Replacing a command in a string with its output

在 Bourne shell 中,我有一个字符串变量 s,它包含字符序列 foo $(ls) bar(这不是字符串文字)。如何获取 ls 命令被其输出替换的字符串?

您将不得不使用 eval,但不推荐这样做,除非您完全控制 s 的值的设置方式。

# Modified slightly for this example
$ s='foo $(echo baz) bar'
$ eval "s=\"$s\""
$ echo "$s"
foo baz bar