Change the if-elif-else condition to a case-esac condition, and improve

the echo output.
This commit is contained in:
name1ess
2025-12-14 22:39:29 +08:00
parent ac8915c77b
commit 083ef90a9f
6 changed files with 4959 additions and 4937 deletions

View File

@@ -21,7 +21,7 @@ ckcmd(){ #检查命令是否存在
#任务命令
check_update(){ #检查更新工具
${CRASHDIR}/start.sh get_bin ${TMPDIR}/crashversion "$1" echooff
[ "$?" = "0" ] && . ${TMPDIR}/crashversion 2>/dev/null
[ "$?" = "0" ] && . ${TMPDIR}/crashversion 2>/dev/null
rm -rf ${TMPDIR}/crashversion
}
update_core(){ #自动更新内核
@@ -92,7 +92,7 @@ update_scripts(){ #自动更新脚本
if [ -z "$versionsh" -o "$versionsh" = "versionsh_l" ];then
logger "任务【自动更新脚本】中止-未检测到版本更新"
exit 1
else
else
${CRASHDIR}/start.sh get_bin ${TMPDIR}/clashfm.tar.gz "bin/update.tar.gz"
if [ "$?" != "0" ];then
rm -rf ${TMPDIR}/clashfm.tar.gz
@@ -112,7 +112,7 @@ update_scripts(){ #自动更新脚本
. ${CRASHDIR}/init.sh >/dev/null
${CRASHDIR}/start.sh start
return 0
fi
fi
fi
fi
}
@@ -195,7 +195,7 @@ set_cron(){
[ -z $week ] && week=*
[ -z $hour ] && hour=*
[ -z $min ] && min=0
echo -----------------------------------------------
echo "-----------------------------------------------"
echo -e "\033[33m$cron_time\033[0m执行任务:\033[36m$task_name\033[0m"
read -p "是否确认添加定时任务?(1/0) > " res
if [ "$res" = '1' ]; then
@@ -223,7 +223,7 @@ set_service(){
}
#任务界面
task_user_add(){ #自定义命令添加
echo -----------------------------------------------
echo "-----------------------------------------------"
echo -e "\033[33m命令可包含空格请确保命令可执行\033[0m"
echo -e "\033[36m此处不要添加执行条件请在添加完成后返回添加具体执行条件\033[0m"
echo -e "也可以手动编辑\033[32m${CRASHDIR}/task/task.user\033[0m添加"
@@ -238,7 +238,7 @@ task_user_add(){ #自定义命令添加
read -p "请输入任务备注 > " txt
[ -n "$txt" ] && task_name=$txt || task_name=自定义任务$task_id
echo "$task_id#$task_command#$task_name" >> ${CRASHDIR}/task/task.user
echo -e "\033[32m自定义任务已添加\033[0m"
echo -e "\033[32m自定义任务已添加\033[0m"
sleep 1
else
echo -e "\033[31m输入错误请重新输入\033[0m"
@@ -246,14 +246,14 @@ task_user_add(){ #自定义命令添加
fi
}
task_user_del(){ #自定义命令删除
echo -----------------------------------------------
echo "-----------------------------------------------"
echo -e "请输入对应ID移除对应自定义任务(不会影响内置任务)"
echo -e "也可以手动编辑\033[32m${CRASHDIR}/task/task.user\033[0m"
echo -----------------------------------------------
echo "-----------------------------------------------"
cat ${CRASHDIR}/task/task.user 2>/dev/null | grep -Ev '^#' | awk -F '#' '{print $1" "$3}'
echo -----------------------------------------------
echo "-----------------------------------------------"
echo 0 返回上级菜单
echo -----------------------------------------------
echo "-----------------------------------------------"
read -p "请输入对应数字 > " num
if [ -n "$num" ];then
sed -i "/^$num#/d" ${CRASHDIR}/task/task.user 2>/dev/null
@@ -264,13 +264,13 @@ task_user_del(){ #自定义命令删除
fi
}
task_add(){ #任务添加
echo -----------------------------------------------
echo "-----------------------------------------------"
echo -e "\033[36m请选择需要添加的任务\033[0m"
echo -----------------------------------------------
echo "-----------------------------------------------"
#输出任务列表
cat ${CRASHDIR}/task/task.list ${CRASHDIR}/task/task.user 2>/dev/null | grep -Ev '^(#|$)' | awk -F '#' '{print " "NR" "$3}'
echo -----------------------------------------------
echo -e " 0 返回上级菜单"
echo "-----------------------------------------------"
echo -e " 0 返回上级菜单"
read -p "请输入对应数字 > " num
case "$num" in
0)
@@ -301,9 +301,9 @@ task_del(){ #任务删除
sed -i "/$1/d" ${CRASHDIR}/task/affirewall 2>/dev/null
}
task_type(){ #任务条件选择菜单
echo -----------------------------------------------
echo "-----------------------------------------------"
echo -e "请选择任务\033[36m【$task_name】\033[0m执行条件"
echo -----------------------------------------------
echo "-----------------------------------------------"
echo -e " 1 定时任务\033[32m每周执行\033[0m"
echo -e " 2 定时任务\033[32m每日执行\033[0m"
echo -e " 3 定时任务\033[32m每小时执行\033[0m"
@@ -312,46 +312,46 @@ task_type(){ #任务条件选择菜单
echo -e " 6 服务\033[33m启动后执行\033[0m"
echo -e " 7 服务\033[33m运行时每分钟执行\033[0m"
echo -e " 8 防火墙服务\033[33m重启后执行\033[0m"
echo -----------------------------------------------
echo -e " 0 返回上级菜单"
echo "-----------------------------------------------"
echo -e " 0 返回上级菜单"
read -p "请输入对应数字 > " num
case "$num" in
0)
return 1
;;
1)
echo -----------------------------------------------
echo "-----------------------------------------------"
echo -e " 输入 1-7 对应\033[33m每周的指定某天\033[0m运行(7=周日)"
echo -e " 输入 1,4,0 代表\033[36m每周一、周四、周日\033[0m运行"
echo -e " 输入 1-5 代表\033[36m周一至周五\033[0m运行"
read -p "在每周哪天执行? > " week
week=`echo ${week/7/0}` #把7换成0
echo -----------------------------------------------
read -p "想在该日的具体哪个小时执行0-23 > " hour
echo "-----------------------------------------------"
read -p "想在该日的具体哪个小时执行0-23 > " hour
cron_time="在每周$week的$hour点整"
cron_time=`echo ${cron_time/周0/周日}` #把0换成日
[ -n "$week" ] && [ -n "$hour" ] && set_cron
;;
;;
2)
echo -----------------------------------------------
echo "-----------------------------------------------"
echo -e " 输入 1,7,15 代表\033[36m每到1,7,15点\033[0m运行"
echo -e " 输入 6-18 代表\033[36m早6点至晚18点间每小时\033[0m运行"
read -p "想在每日的具体哪个小时执行0-23 > " hour
echo -----------------------------------------------
echo -e " 输入 6-18 代表\033[36m早6点至晚18点间每小时\033[0m运行"
read -p "想在每日的具体哪个小时执行0-23 > " hour
echo "-----------------------------------------------"
read -p "想在具体哪分钟执行0-59的整数 > " min
cron_time="在每日的$hour点$min分"
[ -n "$min" ] && [ -n "$hour" ] && set_cron
;;
;;
3)
echo -----------------------------------------------
echo "-----------------------------------------------"
read -p "想每隔多少小时执行一次1-23的整数 > " num
hour="*/$num"
cron_time="每隔$num小时"
[ -n "$hour" ] && set_cron
;;
;;
4)
echo -----------------------------------------------
echo "-----------------------------------------------"
read -p "想每隔多少分钟执行一次1-59的整数 > " num
min="*/$num"
cron_time="每隔$num分钟"
@@ -364,9 +364,9 @@ task_type(){ #任务条件选择菜单
set_service afstart "$task_id" "服务启动后$task_name"
;;
7)
echo -----------------------------------------------
echo -e " 输入10即每隔10分钟运行一次1440即每隔24小时运行一次"
echo -e " 大于60分钟的数值将按小时取整,且按当前时区记时"
echo "-----------------------------------------------"
echo -e " 输入10即每隔10分钟运行一次1440即每隔24小时运行一次"
echo -e " 大于60分钟的数值将按小时取整,且按当前时区记时"
read -p "想每隔多少分钟执行一次1-1440的整数 > " num
if [ "$num" -lt 60 ];then
min="$num"
@@ -391,7 +391,7 @@ task_type(){ #任务条件选择菜单
esac
}
task_manager(){ #任务管理列表
echo -----------------------------------------------
echo "-----------------------------------------------"
#抽取并生成临时列表
croncmd -l > ${TMPDIR}/task_cronlist
cat ${TMPDIR}/task_cronlist ${CRASHDIR}/task/running 2>/dev/null | sort -u | grep -oE "task/task.sh .*" | awk -F ' ' '{print $2" "$3}' > ${TMPDIR}/task_list
@@ -405,28 +405,28 @@ task_manager(){ #任务管理列表
sleep 1
else
echo -e "\033[33m已添加的任务:\033[0m"
echo -----------------------------------------------
echo "-----------------------------------------------"
cat ${TMPDIR}/task_list | awk '{print " " NR " " $2}'
echo -----------------------------------------------
echo -e " a 清空旧版任务"
echo "-----------------------------------------------"
echo -e " a 清空旧版任务"
echo -e " d 清空任务列表"
echo -e " 0 返回上级菜单"
echo -e " 0 返回上级菜单"
read -p "请输入对应数字 > " num
case "$num" in
case "$num" in
0)
;;
;;
a)
task_del "#"
echo -e "\033[31m旧版任务已清空\033[36m"
sleep 1
;;
sleep 1
;;
d)
task_del "task.sh"
echo -e "\033[31m全部任务已清空\033[36m"
sleep 1
;;
sleep 1
;;
[1-9]|[1-9][0-9])
task_txt=$(sed -n "$num p" ${TMPDIR}/task_list)
task_id=$(echo $task_txt | awk '{print $1}')
if [ "$task_id" = 0 ];then
@@ -440,32 +440,32 @@ task_manager(){ #任务管理列表
else
task_des=$(echo $task_txt | awk '{print $2}')
task_name=$(cat ${CRASHDIR}/task/task.list ${CRASHDIR}/task/task.user 2>/dev/null | grep "$task_id" | awk -F '#' '{print $3}')
echo -----------------------------------------------
echo -e "当前任务为:\033[36m $task_des\033[0m"
echo "-----------------------------------------------"
echo -e "当前任务为:\033[36m $task_des\033[0m"
echo -e " 1 \033[33m修改\033[0m当前任务"
echo -e " 2 \033[31m删除\033[0m当前任务"
echo -e " 3 \033[32m立即执行\033[0m一次"
echo -e " 3 \033[32m立即执行\033[0m一次"
echo -e " 4 查看\033[33m执行记录\033[0m"
echo -----------------------------------------------
echo -e " 0 返回上级菜单"
echo "-----------------------------------------------"
echo -e " 0 返回上级菜单"
read -p "请选择需要执行的操作 > " num
case "$num" in
0)
;;
1)
task_type && task_del $task_des
;;
;;
2)
task_del $task_des
;;
;;
3)
task_command=$(cat ${CRASHDIR}/task/task.list ${CRASHDIR}/task/task.user 2>/dev/null | grep "$task_id" | awk -F '#' '{print $2}')
eval $task_command && task_res='执行成功!' || task_res='执行失败!'
logger "任务【$task_des$task_res" 33 off
sleep 1
;;
;;
4)
echo -----------------------------------------------
echo "-----------------------------------------------"
if [ -n "$(cat ${TMPDIR}/ShellCrash.log | grep "$task_name")" ];then
cat ${TMPDIR}/ShellCrash.log | grep "$task_name"
else
@@ -476,7 +476,7 @@ task_manager(){ #任务管理列表
*)
errornum
;;
esac
esac
fi
task_manager
;;
@@ -487,17 +487,17 @@ task_manager(){ #任务管理列表
fi
}
task_recom(){ #任务推荐
echo -----------------------------------------------
echo "-----------------------------------------------"
echo -e "\033[32m启用推荐的自动任务配置这包括\033[0m"
echo -----------------------------------------------
echo "-----------------------------------------------"
echo -e "每隔10分钟自动保存面板配置"
echo -e "服务启动后自动同步ntp时间"
echo -e "在每日的3点0分重启服务"
echo -----------------------------------------------
read -p "是否启用?(1/0) > " res
echo "-----------------------------------------------"
read -p "是否启用?(1/0) > " res
[ "$res" = 1 ] && {
set_service running "106" "运行时每10分钟自动保存面板配置" "*/10 * * * *"
set_service afstart "107" "服务启动后自动同步ntp时间"
set_service afstart "107" "服务启动后自动同步ntp时间"
cronset "在每日的3点0分重启服务" "0 3 * * * ${CRASHDIR}/task/task.sh 103 在每日的3点0分重启服务" && \
echo -e "任务【在每日的3点0分重启服务】\033[32m添加成功\033[0m"
}
@@ -505,9 +505,9 @@ task_recom(){ #任务推荐
task_menu(){ #任务菜单
#检测并创建自定义任务文件
[ -f ${CRASHDIR}/task/task.user ] || echo '#任务ID(必须>200并顺序排列)#任务命令#任务说明(#号隔开,任务命令和说明中都不允许包含#号)' > ${CRASHDIR}/task/task.user
echo -----------------------------------------------
echo "-----------------------------------------------"
echo -e "\033[30;47m欢迎使用自动任务功能\033[0m"
echo -----------------------------------------------
echo "-----------------------------------------------"
echo -e " 1 添加\033[32m自动任务\033[0m"
echo -e " 2 管理\033[33m任务列表\033[0m"
echo -e " 3 查看\033[36m任务日志\033[0m"
@@ -515,8 +515,8 @@ task_menu(){ #任务菜单
echo -e " 5 添加\033[33m自定义任务\033[0m"
echo -e " 6 删除\033[33m自定义任务\033[0m"
echo -e " 7 使用\033[32m推荐设置\033[0m"
echo -----------------------------------------------
echo -e " 0 返回上级菜单"
echo "-----------------------------------------------"
echo -e " 0 返回上级菜单"
read -p "请输入对应数字 > " num
case "$num" in
0)
@@ -524,15 +524,15 @@ task_menu(){ #任务菜单
1)
task_add
task_menu
;;
;;
2)
task_manager
rm -rf ${TMPDIR}/task_list
task_menu
;;
;;
3)
if [ -n "$(cat ${TMPDIR}/ShellCrash.log | grep '任务【')" ];then
echo -----------------------------------------------
echo "-----------------------------------------------"
cat ${TMPDIR}/ShellCrash.log | grep '任务【'
else
echo -e "\033[31m未找到任务相关执行日志\033[0m"
@@ -541,7 +541,7 @@ task_menu(){ #任务菜单
task_menu
;;
4)
echo -----------------------------------------------
echo "-----------------------------------------------"
echo -e "\033[36m请在日志工具中配置相关推送通道及推送开关\033[0m"
log_pusher
task_menu
@@ -561,9 +561,9 @@ task_menu(){ #任务菜单
*)
errornum
;;
esac
}
case "$1" in
@@ -581,4 +581,3 @@ case "$1" in
$1
;;
esac