重构代码, 变量名改为大写
This commit is contained in:
+45
-44
@@ -11,22 +11,23 @@ green(){
|
|||||||
|
|
||||||
# 动态安装软件包
|
# 动态安装软件包
|
||||||
install_package() {
|
install_package() {
|
||||||
local package_name=$1
|
local PACKAGE_NAME=$1
|
||||||
if command -v "$package_name" &> /dev/null; then
|
if command -v "$PACKAGE_NAME" &> /dev/null; then
|
||||||
echo "$package_name 已安装, 跳过."
|
echo "$PACKAGE_NAME 已安装, 跳过."
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "安装 $package_name..."
|
echo "安装 $PACKAGE_NAME..."
|
||||||
sleep 1
|
sleep 1
|
||||||
package_manager=$(get_package_manager)
|
local PACKAGE_MANAGER
|
||||||
if [ "$package_manager" == "apt-get" ]; then
|
PACKAGE_MANAGER=$(get_package_manager)
|
||||||
|
if [ "$PACKAGE_MANAGER" == "apt-get" ]; then
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y "$package_name"
|
sudo apt-get install -y "$PACKAGE_NAME"
|
||||||
elif [ "$package_manager" == "yum" ]; then
|
elif [ "$PACKAGE_MANAGER" == "yum" ]; then
|
||||||
sudo yum install -y "$package_name"
|
sudo yum install -y "$PACKAGE_NAME"
|
||||||
else
|
else
|
||||||
echo "未知的包管理器, 请手动安装 $package_name."
|
echo "未知的包管理器, 请手动安装 $PACKAGE_NAME."
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -55,47 +56,47 @@ check_jq() {
|
|||||||
|
|
||||||
# 生成密码
|
# 生成密码
|
||||||
gen_password() {
|
gen_password() {
|
||||||
local pass_length=$1 # 密码长度作为第一个参数
|
local PASS_LENGTH=$1 # 密码长度作为第一个参数
|
||||||
local chars='[:alnum:]' # 只允许出现字母和数字
|
local CHARS='[:alnum:]' # 只允许出现字母和数字
|
||||||
|
|
||||||
local rand
|
local RAND
|
||||||
rand=$(< /dev/urandom tr -dc "$chars" | head -c "$pass_length")
|
RAND=$(< /dev/urandom tr -dc "$CHARS" | head -c "$PASS_LENGTH")
|
||||||
|
|
||||||
echo "$rand"
|
echo "$RAND"
|
||||||
}
|
}
|
||||||
|
|
||||||
# URL编码
|
# URL编码
|
||||||
url_encode() {
|
url_encode() {
|
||||||
local str="$1"
|
local STR="$1"
|
||||||
local encoded=""
|
local ENCODED=""
|
||||||
local i char hex
|
local I CHAR HEX
|
||||||
|
|
||||||
for ((i = 0; i < ${#str}; i++)); do
|
for ((I = 0; I < ${#STR}; I++)); do
|
||||||
char="${str:$i:1}"
|
CHAR="${STR:$I:1}"
|
||||||
case "$char" in
|
case "$CHAR" in
|
||||||
[a-zA-Z0-9.~_-]) encoded+="$char" ;;
|
[a-zA-Z0-9.~_-]) ENCODED+="$CHAR" ;;
|
||||||
*)
|
*)
|
||||||
printf -v hex '%02X' "'$char"
|
printf -v HEX '%02X' "'$CHAR"
|
||||||
encoded+="%$hex"
|
ENCODED+="%$HEX"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
echo "$encoded"
|
echo "$ENCODED"
|
||||||
}
|
}
|
||||||
|
|
||||||
# 检查tuic配置文件
|
# 检查tuic配置文件
|
||||||
check_config_file(){
|
check_config_file(){
|
||||||
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/../" # 脚本文件夹绝对路径
|
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/../" # 脚本文件夹绝对路径
|
||||||
local config_file="$script_dir/../config/config.json"
|
local CONFIG_FILE="$SCRIPT_DIR/../config/config.json"
|
||||||
|
|
||||||
# 检查配置文件是否存在
|
# 检查配置文件是否存在
|
||||||
if [ ! -e "$config_file" ]; then
|
if [ ! -e "$CONFIG_FILE" ]; then
|
||||||
echo "配置文件不存在, 请先生成配置文件."
|
echo "配置文件不存在, 请先生成配置文件."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 检查配置文件是否为有效的JSON格式
|
# 检查配置文件是否为有效的JSON格式
|
||||||
if ! jq '.' "$config_file" >/dev/null 2>&1; then
|
if ! jq '.' "$CONFIG_FILE" >/dev/null 2>&1; then
|
||||||
echo "配置文件不是有效的JSON格式, 请重新生成配置文件."
|
echo "配置文件不是有效的JSON格式, 请重新生成配置文件."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -104,16 +105,16 @@ check_config_file(){
|
|||||||
|
|
||||||
# 重启docker容器
|
# 重启docker容器
|
||||||
restart_docker() {
|
restart_docker() {
|
||||||
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/../" # 脚本文件夹绝对路径
|
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/../" # 脚本文件夹绝对路径
|
||||||
local compose_file="$script_dir/../docker-compose.yml"
|
local COMPOSE_FILE="$SCRIPT_DIR/../docker-compose.yml"
|
||||||
|
|
||||||
# 如果容器未运行,提示启动
|
# 如果容器未运行,提示启动
|
||||||
local running_count=$(docker compose -f $compose_file ps -q | wc -l)
|
local RUNNING_COUNT=$(docker compose -f $COMPOSE_FILE ps -q | wc -l)
|
||||||
if [ "$running_count" -eq 0 ]; then
|
if [ "$RUNNING_COUNT" -eq 0 ]; then
|
||||||
read -p "容器未启动,是否启动容器?(y/n): " choice
|
read -p "容器未启动,是否启动容器?(y/n): " CHOICE
|
||||||
case "$choice" in
|
case "$CHOICE" in
|
||||||
Y|y)
|
Y|y)
|
||||||
docker compose -f $compose_file up -d
|
docker compose -f $COMPOSE_FILE up -d
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@@ -124,20 +125,20 @@ restart_docker() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "正在重启容器..."
|
echo "正在重启容器..."
|
||||||
docker compose -f $compose_file down
|
docker compose -f $COMPOSE_FILE down
|
||||||
docker compose -f $compose_file up -d
|
docker compose -f $COMPOSE_FILE up -d
|
||||||
}
|
}
|
||||||
|
|
||||||
# 展示当前值并询问用户新输入的值
|
# 展示当前值并询问用户新输入的值
|
||||||
# 用法: ask_update "提示语" "当前值(当前配置文件的值)"
|
# 用法: 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() {
|
ask_update() {
|
||||||
local prompt="$1" # 提示语
|
local PROMPT="$1" # 提示语
|
||||||
local current_value="$2"
|
local CURRENT_VALUE="$2"
|
||||||
local input
|
local INPUT
|
||||||
|
|
||||||
read -p "${prompt} [当前: ${current_value}]: " input
|
read -p "${PROMPT} [当前: ${CURRENT_VALUE}]: " INPUT
|
||||||
# 用户直接回车则保留当前值,否则使用新输入
|
# 用户直接回车则保留当前值,否则使用新输入
|
||||||
echo "${input:-$current_value}"
|
echo "${INPUT:-$CURRENT_VALUE}"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,23 +6,23 @@
|
|||||||
# 案例2:modify_json_file "/foo/bar.json" "servers" '["a.com", "b.com"]'
|
# 案例2:modify_json_file "/foo/bar.json" "servers" '["a.com", "b.com"]'
|
||||||
# 该函数能自动处理不同数据类型,包括数组、对象和数字等。
|
# 该函数能自动处理不同数据类型,包括数组、对象和数字等。
|
||||||
function modify_json_file() {
|
function modify_json_file() {
|
||||||
local json_file=$1 # json文件路径
|
local JSON_FILE=$1 # json文件路径
|
||||||
local key=$2 # 要修改的key
|
local KEY=$2 # 要修改的key
|
||||||
local value=$3 # 要修改的value
|
local VALUE=$3 # 要修改的value
|
||||||
|
|
||||||
#如果key的值是.开头, 则去掉.号
|
#如果key的值是.开头, 则去掉.号
|
||||||
if [[ ${key} == "."* ]]; then
|
if [[ ${KEY} == "."* ]]; then
|
||||||
key=${key:1}
|
KEY=${KEY:1}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 检查值是否为有效的 JSON 格式(如数组、对象或数字)。
|
# 检查值是否为有效的 JSON 格式(如数组、对象或数字)。
|
||||||
# 如果是,则直接将值传递给 jq,无需引号。
|
# 如果是,则直接将值传递给 jq,无需引号。
|
||||||
if echo "${value}" | jq . >/dev/null 2>&1; then
|
if echo "${VALUE}" | jq . >/dev/null 2>&1; then
|
||||||
jq ".${key} = ${value}" "${json_file}" > "${json_file}.tmp"
|
jq ".${KEY} = ${VALUE}" "${JSON_FILE}" > "${JSON_FILE}.tmp"
|
||||||
else
|
else
|
||||||
# 否则,将值视为字符串,并添加引号。
|
# 否则,将值视为字符串,并添加引号。
|
||||||
jq ".${key} = \"${value}\"" "${json_file}" > "${json_file}.tmp"
|
jq ".${KEY} = \"${VALUE}\"" "${JSON_FILE}" > "${JSON_FILE}.tmp"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mv ${json_file}.tmp ${json_file}
|
mv ${JSON_FILE}.tmp ${JSON_FILE}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user