2012-07-12 67 views
0

您好,我正在使用hp unix,我正在嘗試使用for循環來循環使用最近20天(相對於當前日期)。通過關節手術在hp unix中循環日期

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沒有執行,是否可以指出任何一個錯誤?提前致謝 。

回答

0

嘗試不同的報價:

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

(我不熟悉,HPUX,但它看起來像$c ISN」沒有被外殼插入。)

編輯:或略短:

day$c=$(perl -MPOSIX -le "print strftime '%Y%m%d',localtime time-86400*$c;") 
+0

謝謝你,我試過你縮短版本,它工作得很好 – 2012-07-15 08:56:48

0

我相信你有使用的空間在運營商和操作數之間

perl -e 'use POSIX; print strftime "%Y%m%d\n",localtime time - 86400 * $c;' 
+0

不是這個問題沒有嘗試過,它仍然把當前日期放5次! – 2012-07-12 05:25:24

+0

我沒有注意到HPUX!如果你能告訴我在這裏使用perl需要什麼,我可以試着找出我可以做什麼:) – 2012-07-12 05:28:00

+0

使用perl是沒有必要的,我只想循環訪問最後的20個日期。 perl -e'使用POSIX;打印strftime「%Y%m%d \ n」,本地時間時間 - 86400'第一天運行完全正常,所以我試圖使用它,如果你有任何其他建議,我會喜歡它們 – 2012-07-12 05:43:47