У меня есть сценарий, в котором мне нужно выполнить сценарий оболочки в зависимости от того, какой день недели. вот код:
cd /home/test/check
perl test.pl check.ini parameters
Я хочу выполнить эти две строки, только если день не четверг, если день четверг, он не должен выполнять следующие строки. как я могу добиться того же Я новичок в сценариях оболочки, любая помощь приветствуется.
Используйте date "+%u"
для получения числового значения дня недели (1 — понедельник ).
if [ $(date "+%u") != "4" ]; then
cd /home/test/check
perl test.pl check.ini parameters
fi
Вы можете использовать crontab
для выполнения скриптов в определенное время. Отредактируйте crontab, используяcrontab -e
# Use the hash sign to prefix a comment
# +---------------- minute (0 - 59)
# | +------------- hour (0 - 23)
# | | +---------- day of month (1 - 31)
# | | | +------- month (1 - 12)
# | | | | +---- day of week (0 - 7) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed
#--------------------------------------------------------------------------
например, он работает каждый день в 11 :59 утра, кроме четверга.:
59 11 * * 1,2,3,5,6,7 nohup /usr/local/bin/perl /home/test/check/perl.pl check parameters > /tmp/script.log 2>&1
Это работает 6 дней в неделю и довольно -самодокументируемо. Заменить || с &&, если вы хотите запустить только 1 день, в четверг.
cd /home/test/check
date | egrep '^Thu ' || perl test.pl check.ini parameters