में प्रारंभ तिथि से लेकर अंतिम तिथि तक लूप ओएस एक्स (हिम तेंदुए) पर डेट फ़ंक्शन में जीएनयू संस्करण की तरह डेट विकल्प नहीं है और मैं यह समझने में सक्षम नहीं हूं कि कैसे प्राप्त करें ओएस एक्स पर निम्नलिखित के बराबर:मैक ओएस एक्स शैल स्क्रिप्ट
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
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
यह देखने के लिए खुशी हुई कि आपके लिए काम कर रहा है। मुझे यकीन नहीं है कि 'बैश' ओएसएक्स के किस संस्करण में है (यदि यह भी बैश है), लेकिन अगर ऐसा होता है तो आपको 'sDateTs = $ (date -j -f 'जैसे बैकटीक्स के बजाय अपने आदेशों को' $() 'में लपेटना चाहिए ...) 'और डबल ब्रैकेट्स का उपयोग करें [['' एक के बजाय' [''आप [' "$ dateTS" <"$ eDateTs"]] ' – SiegeX