0

我需要使用从 bash 脚本中的命令行变量派生的日期字符串来计算日期。

假设我有一组命令行参数 (CLA),例如 $1=2013 $2=03 $3=22,并且我想获取某个日期之前或之后某个天数的格式化日期字符串。

我总能做到,没有 CLA,

    date -d "20130322 -1 day" -u +%Y%m%d

但是当我尝试类似的东西时,

    yyyy=2013
    month=03
    day=22
    yest='"'$yyyy$month$day'" -1 day"'
    yesterday=$(date -d $yest -u +%Y%m%d)

我得到“日期:无效选项 - '1'”

我哪里出错了?

4

1 回答 1

1

显然你过度使用引号

pwadas@host:~$ echo $(date -d "20130322 -1 day" -u +%Y%m%d)
20130321
pwadas@host:~$ xx=20130322
pwadas@host:~$ echo $(date -d "$xx -1 day" -u +%Y%m%d)
20130321
pwadas@host:~$ 
pwadas@host:~$ yesterday=$(date -d "$xx -1 day" -u +%Y%m%d)
pwadas@host:~$ echo $yesterday
20130321
pwadas@host:~$ 

PS。以上不适用于 MacOSX 上的 bash,但在 Linux 上可以..

于 2013-03-29T16:24:18.510 回答