2

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

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

ETC

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

有任何想法吗?

4

3 回答 3

2

用于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
于 2012-11-08T09:59:49.350 回答
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
于 2012-11-08T10:32:05.590 回答
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
于 2012-11-08T10:11:44.030 回答