0

您好,我正在使用 hp unix,我正在尝试使用 for 循环遍历过去 20 天(相对于当前日期)。

for (( c=1; c<=5; c++ ))
do
day$c=$(perl -e 'use POSIX;print strftime "%Y%m%d\n",localtime time-86400*$c;')
done
later do some operations with day$c

问题是由于某种奇怪的原因 86400*$c 没有执行,有人能指出错误吗?提前致谢 。

4

2 回答 2

0

我相信您必须在运算符和操作数之间使用空格

perl -e 'use POSIX; print strftime "%Y%m%d\n",localtime time - 86400 * $c;'
于 2012-07-12T05:12:12.877 回答
0

尝试不同的引用:

day$c=$(perl -e "use POSIX;print strftime qq(%Y%m%d\n),localtime time-86400*$c;")

(我不熟悉 HPUX,但它看起来$c没有被 shell 插值。)

编辑:或者稍微短一点:

day$c=$(perl -MPOSIX -le "print strftime '%Y%m%d',localtime time-86400*$c;")
于 2012-07-13T21:06:03.063 回答