日期格式之间有空格

日期格式之间有空格

shell 中创建自定义日期格式并在格式之间添加空格的最佳方法是什么?

例如,以下命令按格式打印昨天的日期10 月 9 日

custom_format="$(date -d '-1 day' '+%b %-d')"; echo $custom_format

现在我需要在月份和日期之间添加两个空格,但通常不适合我,我也测试过使用%t添加点击空间但不使用这种格式。

custom_format="$(date -d '-1 day' '+%b **spaces here** %-d')"; echo $custom_format

答案1

该问题与命令本身无关date(只需以您想要的方式在格式字符串中插入空格即可)。问题在于echo你的做法和方式不是引用 的扩展$custom_format

当您不使用 quote 时$custom_format,shell 会根据其中的字符$IFS(默认为空格、制表符和换行符)将其值拆分为单词,然后对生成的单词执行文件名生成(通配符)。

这意味着您的命令echo $custom_format将被转换为类似 的命令echo Oct 9,它echo使用两个参数调用,无论它们之间有多少空格,并且echo将一个接一个地输出每个参数,中间有一个分隔空格。

要获得您正在寻找的输出,请在将其作为参数$custom_format调用时使用双引号。echo

也可以看看

答案2

谢谢 Steeldriver,我使用以下语法修复了它

yesterday_day="$(date -d '-1 day' '+%-d')"
yesterday_month="$(date -d '-1 day' '+%b')"
yesterday="${yesterday_month}   ${yesterday_day}"

现在您可以在其中添加任何您想要的空格

相关内容