iT邦幫忙

0

MAC 執行 date +%Y%m01 -d "4 month ago" 跳 date: illegal time format 錯誤

  • 分享至 

  • xImage

[已解決] ShellScript 往前日期迴圈印出問題
算是這題的衍伸題,家裡電腦 WSL 可以正常跑

#!/bin/bash 

startdate=`echo $(date +%Y%m01 -d "4 month ago")`
enddate=`echo $(date  --date="$(date +%Y%m01 -d " -2 month ") -1 day" '+%Y%m%d' )`

curr="$startdate"
while true; do
    echo "$curr"
    [ "$curr" \< "$enddate" ] || break
    curr=$( date +%Y%m%d --date "$curr +1 day" )
done

但公司電腦是 MAC 所以運行會碰到

date: illegal time format
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... 
            [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]

餵谷狗試不出來,不知該如何解,感謝大家

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
echochio
iT邦高手 1 級 ‧ 2021-01-28 12:29:25
最佳解答

試試看吧 ....
印出這個月一號

$date +%Y%m01
20210101

印出這四個月前一號

$date -j -f %Y%m%d -v-4m `date +%Y%m01` +%Y%m%d
20200901

還是你換個語言寫, 例如 python 這樣就沒跨平台問題

vicentli iT邦研究生 4 級 ‧ 2021-01-28 18:43:54 檢舉

謝謝,真的是跨平台問題,下面那句在MAC可以運行,在WSL無法執行。取時間主要是為了寫接下來要對MySQL下語法用,ShellScript之後會運行在 Liniux 上,我先這樣跑好了,感謝

我要發表回答

立即登入回答