bash日期环境变量

时间:2013-03-29 16:18:02

标签: bash date environment-variables

我需要使用从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'”

我哪里出错?

1 个答案:

答案 0 :(得分: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上呢..