refactor(task_manager): replace recursion with while loop

This commit is contained in:
Sofia
2026-01-10 17:25:32 +08:00
committed by GitHub
parent 10e50dc244
commit 0712905fbe

View File

@@ -211,7 +211,10 @@ task_type(){ #任务条件选择菜单
;; ;;
esac esac
} }
task_manager(){ #任务管理列表
# 任务管理列表
task_manager() {
while true; do
echo "-----------------------------------------------" echo "-----------------------------------------------"
# 抽取并生成临时列表 # 抽取并生成临时列表
croncmd -l >"$TMPDIR"/task_cronlist croncmd -l >"$TMPDIR"/task_cronlist
@@ -224,6 +227,7 @@ task_manager(){ #任务管理列表
if [ ! -s "$TMPDIR"/task_list ]; then if [ ! -s "$TMPDIR"/task_list ]; then
echo -e "\033[31m当前没有可供管理的任务\033[36m" echo -e "\033[31m当前没有可供管理的任务\033[36m"
sleep 1 sleep 1
break
else else
echo -e "\033[33m已添加的任务:\033[0m" echo -e "\033[33m已添加的任务:\033[0m"
echo "-----------------------------------------------" echo "-----------------------------------------------"
@@ -234,20 +238,22 @@ task_manager(){ #任务管理列表
echo -e " 0 返回上级菜单" echo -e " 0 返回上级菜单"
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
case "$num" in case "$num" in
0) "" | 0)
break
;; ;;
a) a)
task_del "#" task_del "#"
echo -e "\033[31m旧版任务已清空\033[36m" echo -e "\033[31m旧版任务已清空\033[36m"
sleep 1 sleep 1
break
;; ;;
d) d)
task_del "task.sh" task_del "task.sh"
echo -e "\033[31m全部任务已清空\033[36m" echo -e "\033[31m全部任务已清空\033[36m"
sleep 1 sleep 1
break
;; ;;
[1-9] | [1-9][0-9]) [1-9] | [1-9][0-9])
task_txt=$(sed -n "$num p" "$TMPDIR"/task_list) task_txt=$(sed -n "$num p" "$TMPDIR"/task_list)
task_id=$(echo $task_txt | awk '{print $1}') task_id=$(echo $task_txt | awk '{print $1}')
if [ "$task_id" = 0 ]; then if [ "$task_id" = 0 ]; then
@@ -258,6 +264,7 @@ task_manager(){ #任务管理列表
sed -i "/$cronname/d" $clashdir/tools/cron 2>/dev/null sed -i "/$cronname/d" $clashdir/tools/cron 2>/dev/null
rm -f $TMPDIR/conf rm -f $TMPDIR/conf
} }
break
else else
task_des=$(echo $task_txt | awk '{print $2}') 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}') task_name=$(cat "$CRASHDIR"/task/task.list "$CRASHDIR"/task/task.user 2>/dev/null | grep "$task_id" | awk -F '#' '{print $3}')
@@ -271,7 +278,8 @@ task_manager(){ #任务管理列表
echo -e " 0 返回上级菜单" echo -e " 0 返回上级菜单"
read -p "请选择需要执行的操作 > " num read -p "请选择需要执行的操作 > " num
case "$num" in case "$num" in
0) "" | 0)
return 0
;; ;;
1) 1)
task_type && task_del $task_des task_type && task_del $task_des
@@ -296,17 +304,21 @@ task_manager(){ #任务管理列表
;; ;;
*) *)
errornum errornum
sleep 1
;; ;;
esac esac
fi fi
task_manager
;; ;;
*) *)
errornum errornum
sleep 1
break
;; ;;
esac esac
fi fi
done
} }
task_recom(){ #任务推荐 task_recom(){ #任务推荐
echo "-----------------------------------------------" echo "-----------------------------------------------"
echo -e "\033[32m启用推荐的自动任务配置这包括\033[0m" echo -e "\033[32m启用推荐的自动任务配置这包括\033[0m"