我需要使用从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'”
我哪里出错?
答案 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上呢..