重构代码, 变量名改为大写

This commit is contained in:
Olia Lisa
2026-05-21 18:43:35 +08:00
parent 078fc195c0
commit aa5c36fd8d
2 changed files with 54 additions and 53 deletions
+45 -44
View File
@@ -11,22 +11,23 @@ green(){
# 动态安装软件包
install_package() {
local package_name=$1
if command -v "$package_name" &> /dev/null; then
echo "$package_name 已安装, 跳过."
local PACKAGE_NAME=$1
if command -v "$PACKAGE_NAME" &> /dev/null; then
echo "$PACKAGE_NAME 已安装, 跳过."
return 0
fi
echo "安装 $package_name..."
echo "安装 $PACKAGE_NAME..."
sleep 1
package_manager=$(get_package_manager)
if [ "$package_manager" == "apt-get" ]; then
local PACKAGE_MANAGER
PACKAGE_MANAGER=$(get_package_manager)
if [ "$PACKAGE_MANAGER" == "apt-get" ]; then
sudo apt-get update
sudo apt-get install -y "$package_name"
elif [ "$package_manager" == "yum" ]; then
sudo yum install -y "$package_name"
sudo apt-get install -y "$PACKAGE_NAME"
elif [ "$PACKAGE_MANAGER" == "yum" ]; then
sudo yum install -y "$PACKAGE_NAME"
else
echo "未知的包管理器, 请手动安装 $package_name."
echo "未知的包管理器, 请手动安装 $PACKAGE_NAME."
return 1
fi
}
@@ -55,47 +56,47 @@ check_jq() {
# 生成密码
gen_password() {
local pass_length=$1 # 密码长度作为第一个参数
local chars='[:alnum:]' # 只允许出现字母和数字
local PASS_LENGTH=$1 # 密码长度作为第一个参数
local CHARS='[:alnum:]' # 只允许出现字母和数字
local rand
rand=$(< /dev/urandom tr -dc "$chars" | head -c "$pass_length")
local RAND
RAND=$(< /dev/urandom tr -dc "$CHARS" | head -c "$PASS_LENGTH")
echo "$rand"
echo "$RAND"
}
# URL编码
url_encode() {
local str="$1"
local encoded=""
local i char hex
local STR="$1"
local ENCODED=""
local I CHAR HEX
for ((i = 0; i < ${#str}; i++)); do
char="${str:$i:1}"
case "$char" in
[a-zA-Z0-9.~_-]) encoded+="$char" ;;
for ((I = 0; I < ${#STR}; I++)); do
CHAR="${STR:$I:1}"
case "$CHAR" in
[a-zA-Z0-9.~_-]) ENCODED+="$CHAR" ;;
*)
printf -v hex '%02X' "'$char"
encoded+="%$hex"
printf -v HEX '%02X' "'$CHAR"
ENCODED+="%$HEX"
;;
esac
done
echo "$encoded"
echo "$ENCODED"
}
# 检查tuic配置文件
check_config_file(){
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/../" # 脚本文件夹绝对路径
local config_file="$script_dir/../config/config.json"
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/../" # 脚本文件夹绝对路径
local CONFIG_FILE="$SCRIPT_DIR/../config/config.json"
# 检查配置文件是否存在
if [ ! -e "$config_file" ]; then
if [ ! -e "$CONFIG_FILE" ]; then
echo "配置文件不存在, 请先生成配置文件."
exit 1
fi
# 检查配置文件是否为有效的JSON格式
if ! jq '.' "$config_file" >/dev/null 2>&1; then
if ! jq '.' "$CONFIG_FILE" >/dev/null 2>&1; then
echo "配置文件不是有效的JSON格式, 请重新生成配置文件."
exit 1
fi
@@ -104,16 +105,16 @@ check_config_file(){
# 重启docker容器
restart_docker() {
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/../" # 脚本文件夹绝对路径
local compose_file="$script_dir/../docker-compose.yml"
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/../" # 脚本文件夹绝对路径
local COMPOSE_FILE="$SCRIPT_DIR/../docker-compose.yml"
# 如果容器未运行,提示启动
local running_count=$(docker compose -f $compose_file ps -q | wc -l)
if [ "$running_count" -eq 0 ]; then
read -p "容器未启动,是否启动容器?(y/n): " choice
case "$choice" in
local RUNNING_COUNT=$(docker compose -f $COMPOSE_FILE ps -q | wc -l)
if [ "$RUNNING_COUNT" -eq 0 ]; then
read -p "容器未启动,是否启动容器?(y/n): " CHOICE
case "$CHOICE" in
Y|y)
docker compose -f $compose_file up -d
docker compose -f $COMPOSE_FILE up -d
return
;;
*)
@@ -124,20 +125,20 @@ restart_docker() {
fi
echo "正在重启容器..."
docker compose -f $compose_file down
docker compose -f $compose_file up -d
docker compose -f $COMPOSE_FILE down
docker compose -f $COMPOSE_FILE up -d
}
# 展示当前值并询问用户新输入的值
# 用法: ask_update "提示语" "当前值(当前配置文件的值)"
# 示例:
# new_port=$(ask_update "请输入新的端口号" "$(jq -r '.inbounds[0].port' $config_dir/config.json)")
# NEW_PORT=$(ask_update "请输入新的端口号" "$(jq -r '.inbounds[0].port' $CONFIG_DIR/config.json)")
ask_update() {
local prompt="$1" # 提示语
local current_value="$2"
local input
local PROMPT="$1" # 提示语
local CURRENT_VALUE="$2"
local INPUT
read -p "${prompt} [当前: ${current_value}]: " input
read -p "${PROMPT} [当前: ${CURRENT_VALUE}]: " INPUT
# 用户直接回车则保留当前值,否则使用新输入
echo "${input:-$current_value}"
echo "${INPUT:-$CURRENT_VALUE}"
}