我可以使用Bash IF ELSE语句根据星期几

时间:2012-11-08 09:39:36

标签: bash date if-statement

我正在编写一个脚本,我有4个单独的Curl命令,我需要根据每个星期运行

即如果第1周运行卷曲1    如果第2周运行curl 2

只有4个,它们只需要在本月的前4周运行,第5周无关紧要。

任何想法?

3 个答案:

答案 0 :(得分:2)

有很多解决方案,这里有一个更深奥的解决方案:

为每周的行动创建一个函数,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

答案 1 :(得分:1)

使用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

答案 2 :(得分:0)

week1 ... week5是针对不同周的不同行为的函数。

date获取日期编号,不填充零(填充零被解释为八进制)。 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

你也可以使用if ... 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