Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash echo$(printf…)删除空白/格式_Bash_Printf - Fatal编程技术网

Bash echo$(printf…)删除空白/格式

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在bash中格式化一个数字:

$ 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,现在它可以正常工作了。谢谢你快速清晰的回答。我将把这个问题标记为已解决