#!/bin/bash # 获取今天的日期信息 current_year=$(date +%Y) current_month=$(date +%m) current_day=$(date +%d) # 定义指定的日子(1-7 表示周一到周日) today=1 # 例如:3 表示周三 current_weekday=$(date +%u) # 1-7 (周一到周日) # 首先确认今天是否为指定的日子 if [[ $current_weekday -ne $today ]]; then echo "今天不是周${today},退出脚本。" exit 0 fi # 获取当前月份的天数 last_day_of_month=$(date -d "$current_year-$current_month-01 +1 month -1 day" +%d) # 计算本月的第几个指定的日子 today_count=0 for ((day = 1; day <= last_day_of_month; day++)); do # 使用明确的日期格式 YYYY-MM-DD weekday=$(date -d "${current_year}-${current_month}-${day}" +%u) if [[ $weekday -eq $today ]]; then # 如果是指定的日子,且日期小于等于今天,则计入统计 if [[ $day -le $current_day ]]; then ((today_count++)) fi fi done # 打印调试信息 echo "本月的第几个指定的日子: $today_count" # 根据第几个指定的日子设置参数 case $today_count in 1) param1="miracle" param2="elasticsearch-0" ;; 2) param1="lydia" param2="elasticsearch-1" ;; 3) param1="emma" param2="elasticsearch-2" ;; 4) param1="niyon" param2="elasticsearch-3" ;; *) echo "今天不是本月的第 1 至第 4 个指定日子,退出脚本。" exit 0 ;; esac # 固定的第三个参数 param3="/mnt/adata/instanceBackUps" # 打印参数并运行 vmBackUp.sh echo "运行 vmBackUp.sh 参数: $param1 $param2 $param3" ./vmBackUp.sh "$param1" "$param2" "$param3"