Bash echo$(printf…)删除空白/格式
我使用printf在bash中格式化一个数字:Bash echo$(printf…)删除空白/格式,bash,printf,Bash,Printf,我使用printf在bash中格式化一个数字: $ printf -- ">>%4d\n" 1 >> 1 这很好,但当我在子shell中执行相同的操作时: $ echo $(printf -- ">>%4d\n" 1) >> 1 为什么要删除空格?我完全不知道。确保在使用命令替换时使用引号以获得正确的间距: echo "$(printf -- ">>%4d\n" 1)" >> 1 确保在使用命令替换以获得正确的
$ printf -- ">>%4d\n" 1
>> 1
这很好,但当我在子shell中执行相同的操作时:
$ echo $(printf -- ">>%4d\n" 1)
>> 1
为什么要删除空格?我完全不知道。确保在使用命令替换时使用引号以获得正确的间距:
echo "$(printf -- ">>%4d\n" 1)"
>> 1
确保在使用命令替换以获得正确的间距时使用引号:
echo "$(printf -- ">>%4d\n" 1)"
>> 1
子外壳没有这样做。不直接 这里的问题是,您没有引用子shell结果。因此,shell是对结果文本进行单词拆分,删除多余的空格,然后将单词列表交给echo,这样就可以在没有多余空格的情况下愉快地将它们吐回给您 这与运行echo 1并想知道额外的空间到哪里去了基本上没有什么不同
我的回答也讨论了这一点。子shell没有这样做。不直接 这里的问题是,您没有引用子shell结果。因此,shell是对结果文本进行单词拆分,删除多余的空格,然后将单词列表交给echo,这样就可以在没有多余空格的情况下愉快地将它们吐回给您 这与运行echo 1并想知道额外的空间到哪里去了基本上没有什么不同
我的回答也对此进行了一些讨论。下面是一个链接,详细描述了在脚本中引用的时间和原因,请看一看,它会很有用
下面是一个链接,详细描述了什么时候以及为什么要在脚本中引用,看看它是否有用
Thx,我确实回显了$printf->>%4d\n 1,现在它可以正常工作了。谢谢你快速清晰的回答。我会将问题标记为solvedThx,我确实回显了$printf->>%4d\n 1,现在它可以正常工作了。谢谢你快速清晰的回答。我将把这个问题标记为已解决