linuxtool/run.sh

80 lines
2.1 KiB
Bash
Raw Normal View History

2024-07-23 20:50:16 +08:00
#!/bin/bash
2024-09-23 17:59:28 +08:00
if [[ $UID != 0 ]]; then
echo "请以root权限执行该脚本"
exit
2024-07-23 20:50:16 +08:00
fi
declare -a function_array
declare selected_function
declare script_path=$(dirname $0)
script_path="${script_path}/Config"
declare local_path=$script_path
declare script_name
while true
do
2025-05-19 22:41:57 +08:00
# 1. 目录初始化脚本 _init.sh
if [[ -e "${local_path}/_init.sh" ]]; then
bash "${local_path}/_init.sh"
2024-09-26 09:48:31 +08:00
if [[ $? -eq 1 ]]; then
local_path=$script_path
2025-05-19 22:41:57 +08:00
continue
2024-09-26 09:48:31 +08:00
fi
2024-09-26 08:55:44 +08:00
fi
2025-05-19 22:41:57 +08:00
# 2. 完全替代菜单 _menu.sh
if [[ -e "${local_path}/_menu.sh" ]]; then
2024-09-26 09:48:31 +08:00
clear
2025-05-19 22:41:57 +08:00
bash "${local_path}/_menu.sh" "$local_path"
local_path=$script_path
2025-05-19 22:41:57 +08:00
continue
2024-09-26 09:18:37 +08:00
fi
2025-05-19 22:41:57 +08:00
# 默认菜单逻辑
selected_function=0
function_array=()
echo "======$(basename $local_path .sh)======"
for i in "${local_path}"/*
2024-07-23 20:50:16 +08:00
do
script_name=$(awk -F '.' '{print $1}' <<< "$(basename $i)")
2025-05-19 22:41:57 +08:00
# 忽略特殊文件
if [[ $script_name =~ ^_ ]]; then
2024-09-26 08:55:44 +08:00
continue
fi
selected_function=$((selected_function + 1))
function_array[$selected_function]=$script_name
echo "${selected_function}.${function_array[$selected_function]}"
2024-07-23 20:50:16 +08:00
done
2024-09-26 08:58:55 +08:00
2025-05-19 22:41:57 +08:00
if [[ $local_path != $script_path ]]; then
2024-09-26 08:58:55 +08:00
echo "输入任意返回主页"
fi
read -p "请输入要使用的功能:" user_choice
if [[ "$user_choice" =~ ^[0-9]+$ ]] && [ "$user_choice" -ge 1 ] && [ "$user_choice" -le "${#function_array[*]}" ]; then
2024-07-23 20:50:16 +08:00
clear
2025-05-19 22:41:57 +08:00
selected_script="${function_array[$user_choice]}"
if [[ -d "${local_path}/${selected_script}" ]]; then
# 进入子目录
local_path="${local_path}/${selected_script}"
elif [[ -e "${local_path}/${selected_script}.sh" ]]; then
# 3. 检查是否存在 _action.sh半替代菜单
if [[ -e "${local_path}/_action.sh" ]]; then
# 将用户选择的脚本名称和当前路径传递给 _action.sh
bash "${local_path}/_action.sh" "$local_path" "${selected_script}"
else
# 直接执行用户选择的脚本
bash "${local_path}/${selected_script}.sh"
fi
local_path=$script_path
2024-09-26 08:55:44 +08:00
fi
2024-07-23 20:50:16 +08:00
else
2025-05-19 22:41:57 +08:00
if [[ $local_path == $script_path ]]; then
2024-09-26 08:58:55 +08:00
exit
fi
local_path=$script_path
fi
done