簡體   English   中英

使用bash中的while循環打印增量日期

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM