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}"
现在您可以在其中添加任何您想要的空格