Мне нужно выполнить сценарий, передав предыдущую дату в качестве аргумента командной строки. Это нужно автоматизировать. Итак, как я могу передать в сценарий предыдущую дату?
Например:
sh processFile.sh previousdate previousdate
это будет работать:
sh processFile.sh "$(date +"%Y-%m-%d" -d "yesterday")" "$(date +"%Y-%m-%d" -d "yesterday")"
Извините, получил ответ. Публикация о том, что это кому-то поможет. Это можно сделать так:
sh getDate.sh "$(date --date="-1 day" +%Y-%m-%d)" "$(date --date="-1 day" +%Y-%m-%d)"
С GNU дата
:
previousdate=$( date -d 'yesterday' +'%F' )
sh processFile.sh "$previousdate" "$previousdate"
С macOS дата
:
previousdate=$( date -j -v -1d +'%F' )
sh processFile.sh "$previousdate" "$previousdate"
Вы можете использовать это, чтобы получить предыдущий день и передать его в качестве аргумента:
date +%Y-%m-%d -d "1 day ago"
для получения дополнительной информации обратитесь к man
странице date
, чтобы даже управлять минутами и секундами.
На OpenBSD , FreeBSD и MacOS с BSD date
, а также на illumos и других системах, не являющихся -GNU:
YESTERDAY="$(date -r $(expr $(date +%s) - $(expr 60 \* 60 \* 24)) +%Y-%m-%d)"
sh processFile.sh $YESTERDAY $YESTERDAY
В GNU/Linux с date
из GNU coreutils:
YESTERDAY="$(date -d-1day +%Y-%m-%d)"
sh processFile.sh $YESTERDAY $YESTERDAY