私はスクリプトに取り組んでおり、月の週に応じて実行する必要がある4つの個別のCurlコマンドがあります
つまり、1週目がcurl 1を実行する場合、2週目がcurl2を実行する場合
等
4つしかなく、月の最初の4週間に実行する必要があるだけで、5週目は関係ありません。
何か案は?
私はスクリプトに取り組んでおり、月の週に応じて実行する必要がある4つの個別のCurlコマンドがあります
つまり、1週目がcurl 1を実行する場合、2週目がcurl2を実行する場合
等
4つしかなく、月の最初の4週間に実行する必要があるだけで、5週目は関係ありません。
何か案は?
date
月の日を取得し、それに対して処理するために使用します。
day=$(date +%-d)
if [[ $day -le 7 ]]
then
action1
elif [[ $day -le 14 ]]
then
action2
elif [[ $day -le 21 ]]
then
action3
elif [[ $day -le 28 ]]
then
action4
fi
多くの解決策がありますが、ここにもっと難解なものがあります:
各週のアクションの関数week1..week5に加えて、weekiと呼ばれる無効な週の関数を作成します。
actions=(weeki week1 week2 week3 week4 week5) # an array of function names
day=$(date +%-d) # get the day of the month
index=$(( (day/7) + 1 )) # get the week number
eval ${actions[$index]} # execute the function
week1
...week5
は、週ごとに異なるアクションを持つ関数です。
ゼロをパディングせずに、から日番号を取得しdate
ます(ゼロをパディングすると8進数として解釈されます)。date +%-d
ゼロを埋めずに月の日を表示します。
day=$(date +%-d)
let "week=(day-1)/7+1"
case $week in
1) week1;;
2) week2;;
3) week3;;
4) week4;;
5) week5;;
esac
次の場合にも使用できます...elif
if [[ $week -eq 1 ]]
then
week1
elif [[ $week -eq 2 ]]
then
week2
elif [[ $week -eq 3 ]]
then
week3
elif [[ $week -eq 4 ]]
then
week4
elif [[ $week -eq 5 ]]
then
week5
fi