[英]Print incremental date using while loop in bash
我嘗試在bash腳本中使用while循環在兩個日期之間打印日期。
但是當我執行時,我得到以下錯誤:
test.sh: line 8: [: 02-12-14: integer expression expected
以下是我的代碼,任何人都可以幫助我
#!/bin/bash
sdate=02-12-14
edate=02-25-14
while [ "$sdate" -le "$edate" ]
do
echo $sdate
sdate=$(date +%m-%d-%y -d "$sdate + 1 day")
done
您應該將它們存儲為時間戳:
#!/bin/bash
sdate=$(date -d '2014-02-12' +%s)
edate=$(date -d '2014-02-25' +%s)
while [[ sdate -le edate ]]; do
date -d "@$sdate" '+%m-%d-%y'
sdate=$(date -d "$(date -d "@${sdate}" ) + 1 day" +%s)
done
輸出:
02-12-14
02-13-14
02-14-14
02-15-14
02-16-14
02-17-14
02-18-14
02-19-14
02-20-14
02-21-14
02-22-14
02-23-14
02-24-14
02-25-14
在Bash中對條件表達式總是更喜歡[[ ]]
不是[ ]
。 (( ))
也可能是偏好。
它需要GNU date
。 例如date --version
= date (GNU coreutils) 8.21 ...
mm-dd-yy
不是輸入date
可接受的格式,因此我使用了yyyy-mm-dd
,這是可以接受的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.