日付に基づいてシェルスクリプトを実行する必要があるシナリオがあります。コードは次のとおりです。
cd /home/test/check
perl test.pl check.ini parameters
木曜日でない場合にのみ、この2行を実行したいと思います。木曜日の場合、次の行は実行しないでください。同じ目標をどのように達成できますか?私はシェルスクリプトに初めて接する人なので、助けてくれてありがとう。
答え1
date "+%u"
数字の曜日を取得します(1は月曜日を意味します)。
if [ $(date "+%u") != "4" ]; then
cd /home/test/check
perl test.pl check.ini parameters
fi
答え2
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
答え3
週に6日間実行され、かなり独自に文書化されます。 ||を木曜日に1日だけ実行するには、&&を使用してください。
cd /home/test/check
date | egrep '^Thu ' || perl test.pl check.ini parameters