0

When I assign in a bash script

DATE=`date`

and

TODAY=${DATE:4:7}

then TODAY contains "Jul 2 " instead of "Jul{2 spaces} ".

So I want to change the first space in $TODAY into two spaces.
How do I do that?
Or how can I avoid the first wrong assignment to $TODAY?

4

4 回答 4

2

如果你只是想要Jul 2,为什么不使用date选项?

$ date "+%b %-d"
Jul 2
于 2013-07-02T10:25:40.143 回答
1

如果您想要当前月份后跟两个空格:

date +'%b  '

或者,对于长名称:

date +'%B  '

要将命令分配给变量,只需使用 $() 运算符,如下所示:

DATE=$(date +'%b  ')

并像这样打印

echo "$DATE is the current month, with more spaces\!"
于 2013-07-02T10:29:38.727 回答
1
  1. 引用是关键。
  2. 使用$(...)而不是反引号。

您会发现保留了空格:

$ DATE="$(date)"
$ echo "${DATE}"
$ Tue Jul  2 11:43:21 GMT 2013
$ TODAY=${DATE:4:7}
$ echo "*${TODAY}*"
$ *Jul  2 *
于 2013-07-02T10:39:32.950 回答
1

使用日期参数来格式化你想要的日期

date "+%b %_d"

将用空间填充一天,给你所追求的 2 个空间

于 2013-07-02T10:40:23.160 回答