我使用printf格式化bash中的数字:
$ printf -- ">>%4d\n" 1
>> 1
这很好用,但是当我在子shell中做同样的事情时:
$ echo $(printf -- ">>%4d\n" 1)
>> 1
为什么要删除空格?我完全不知道。
答案 0 :(得分:3)
子shell没有这样做。不是直接的。
这里的问题是你没有引用子shell结果。因此,shell会对生成的文本进行分词(删除多余的空格),然后将一个单词列表发送回来,然后快乐地将它们吐出来(没有额外的空格)。
这与运行echo 1
基本没什么不同,并且想知道额外空格去了哪里。
我的回答here也讨论了这一点。
答案 1 :(得分:2)
确保在使用command substitution
时使用引号以获得正确的间距:
echo "$(printf -- ">>%4d\n" 1)"
>> 1
答案 2 :(得分:0)
下面的链接详细说明了在脚本中引用的时间和原因,看看它是否有用。