Funkcja daty na OS X (Snow Leopard) nie ma opcji --date takiej jak wersja GNU i nie jestem w stanie wymyślić, jak uzyskać równoważne z następujących na OS X:Pętla od daty rozpoczęcia do daty końcowej w skrypcie powłoki Mac OS X
startdate=2010-01-01
enddate=2010-01-31
foldate="$startdate"
until [ "$foldate" == "$enddate" ]
do
# do something with the date here - like pass it as a parameter to a command
foldate=`/bin/date --date "$foldate 1 day" +%Y-%m-%d`
done
rozwiązany z odpowiedziami z SiegeX:
startdate=2010-01-01
enddate=2010-01-31
sDateTs=`date -j -f "%Y-%m-%d" $startdate "+%s"`
eDateTs=`date -j -f "%Y-%m-%d" $enddate "+%s"`
dateTs=$sDateTs
offset=86400
while [ "$dateTs" -le "$eDateTs" ]
do
date=`date -j -f "%s" $dateTs "+%Y-%m-%d"`
printf '%s\n' $date
dateTs=$(($dateTs+$offset))
done
Cieszę się, że to działa dla ciebie. Nie jestem pewien, jaka wersja "bash' OSX ma (jeśli ma nawet bash), ale jeśli tak, powinieneś owijać swoje polecenia w' $() 'zamiast backticks takich jak' sDateTs = $ (date -j -f ...) 'i użyj podwójnego nawiasu' [['' zamiast pojedynczego '[' tak można zrobić 'podczas gdy [[" $ dateTS "<" $ eDateTs "]]' – SiegeX