0

我有一个命令返回一个带有前导空格的字符串,当我使用命令替换时会被吃掉

> echo "  test"
  test

> echo $(echo "  test")
test

为什么会发生这种情况,我该怎么办?

4

1 回答 1

1

您可以用双引号命令替换来保留它,

echo "$(echo "  test")"
  test

man bash页面上看,

命令替换

Bash 通过执行命令并将命令替换替换为命令的标准输出来执行扩展,并删除任何尾随的换行符。嵌入的换行符不会被删除,但它们可能会在分词过程中被删除。

如果替换出现在双引号内,则不会对结果执行分词和路径名扩展。

于 2017-03-18T11:01:50.827 回答