La función de fecha en OS X (Snow Leopard) no tiene la opción --date como la versión GNU y no puedo averiguar cómo obtener el equivalente a la siguiente en OS X:Loop desde la fecha de inicio hasta la fecha de finalización en el script de shell de 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
soluciona con respuestas de 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
Me alegro de ver que funcione para usted. No estoy seguro de qué versión de 'bash' OSX tiene (si es que tiene bash), pero si lo hace, debe envolver sus comandos en' $() 'en lugar de backticks como' sDateTs = $ (date -j -f ...) 'y use corchetes dobles' [['en vez de' '' para que pueda hacer 'mientras [[" $ dateTS "<" $ eDateTs "]]' – SiegeX