fix: add double quote to prevent globbing and word splitting

This commit is contained in:
Sofia
2026-01-14 20:52:22 +08:00
committed by GitHub
parent e048264d9e
commit 602f3e2890

View File

@@ -160,7 +160,7 @@ setscripts(){
echo "-----------------------------------------------" echo "-----------------------------------------------"
echo -e "\033[32m管理脚本更新成功!\033[0m" echo -e "\033[32m管理脚本更新成功!\033[0m"
echo "-----------------------------------------------" echo "-----------------------------------------------"
exit; exit
fi fi
} }
@@ -170,18 +170,18 @@ setcpucore(){ #手动设置内核架构
echo "-----------------------------------------------" echo "-----------------------------------------------"
echo -e "\033[31m仅适合脚本无法正确识别核心或核心无法正常运行时使用\033[0m" echo -e "\033[31m仅适合脚本无法正确识别核心或核心无法正常运行时使用\033[0m"
echo -e "当前可供在线下载的处理器架构为:" echo -e "当前可供在线下载的处理器架构为:"
echo $cpucore_list | awk -F " " '{for(i=1;i<=NF;i++) {print i" "$i }}' echo "$cpucore_list" | awk -F " " '{for(i=1;i<=NF;i++) {print i" "$i }}'
echo -e "不知道如何获取核心版本?请参考:\033[36;4mhttps://juewuy.github.io/bdaz\033[0m" echo -e "不知道如何获取核心版本?请参考:\033[36;4mhttps://juewuy.github.io/bdaz\033[0m"
echo "-----------------------------------------------" echo "-----------------------------------------------"
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
[ -n "$num" ] && setcpucore=$(echo $cpucore_list | awk '{print $"'"$num"'"}' ) [ -n "$num" ] && setcpucore=$(echo "$cpucore_list" | awk '{print $"'"$num"'"}')
if [ -z "$setcpucore" ]; then if [ -z "$setcpucore" ]; then
echo -e "\033[31m请输入正确的处理器架构\033[0m" echo -e "\033[31m请输入正确的处理器架构\033[0m"
sleep 1 sleep 1
cpucore="" cpucore=""
else else
cpucore=$setcpucore cpucore=$setcpucore
setconfig cpucore $cpucore setconfig cpucore "$cpucore"
fi fi
} }
setcoretype() { #手动指定内核类型 setcoretype() { #手动指定内核类型
@@ -254,8 +254,8 @@ getcore() {
;; ;;
*) *)
echo -e "\033[31m核心文件下载成功但校验失败请尝试手动指定CPU版本\033[0m" echo -e "\033[31m核心文件下载成功但校验失败请尝试手动指定CPU版本\033[0m"
rm -rf ${TMPDIR}/core_new rm -rf "${TMPDIR}"/core_new
rm -rf ${TMPDIR}/core_new.tar.gz rm -rf "${TMPDIR}"/core_new.tar.gz
setcpucore setcpucore
;; ;;
esac esac
@@ -265,12 +265,12 @@ checkcustcore() {
[ "$api_tag" = "latest" ] && api_url=latest || api_url="tags/$api_tag" [ "$api_tag" = "latest" ] && api_url=latest || api_url="tags/$api_tag"
# 通过githubapi获取内核信息 # 通过githubapi获取内核信息
echo -e "\033[32m正在获取内核文件链接\033[0m" echo -e "\033[32m正在获取内核文件链接\033[0m"
webget "$TMPDIR"/github_api https://api.github.com/repos/${project}/releases/${api_url} webget "$TMPDIR"/github_api https://api.github.com/repos/"${project}"/releases/"${api_url}"
if [ "$?" = 0 ]; then if [ "$?" = 0 ]; then
release_tag=$(cat "$TMPDIR"/github_api | grep '"tag_name":' | awk -F '"' '{print $4}') release_tag=$(cat "$TMPDIR"/github_api | grep '"tag_name":' | awk -F '"' '{print $4}')
release_date=$(cat "$TMPDIR"/github_api | grep '"published_at":' | awk -F '"' '{print $4}') release_date=$(cat "$TMPDIR"/github_api | grep '"published_at":' | awk -F '"' '{print $4}')
update_date=$(cat "$TMPDIR"/github_api | grep '"updated_at":' | head -n 1 | awk -F '"' '{print $4}') update_date=$(cat "$TMPDIR"/github_api | grep '"updated_at":' | head -n 1 | awk -F '"' '{print $4}')
[ -n "$(echo $cpucore | grep mips)" ] && cpu_type=mips || cpu_type=$cpucore [ -n "$(echo "$cpucore" | grep mips)" ] && cpu_type=mips || cpu_type=$cpucore
cat "$TMPDIR"/github_api | grep "browser_download_url" | grep -oE "https://github.com/${project}/releases/download.*linux.*${cpu_type}.*\.gz\"$" | sed 's/"//' >"$TMPDIR"/core.list cat "$TMPDIR"/github_api | grep "browser_download_url" | grep -oE "https://github.com/${project}/releases/download.*linux.*${cpu_type}.*\.gz\"$" | sed 's/"//' >"$TMPDIR"/core.list
rm -rf "$TMPDIR"/github_api rm -rf "$TMPDIR"/github_api
@@ -415,7 +415,7 @@ setcore() {
[ -z "$crashcore" ] && crashcore="unknow" [ -z "$crashcore" ] && crashcore="unknow"
[ -z "$zip_type" ] && zip_type="tar.gz" [ -z "$zip_type" ] && zip_type="tar.gz"
echo "$crashcore" | grep -q 'singbox' && core_old=singbox || core_old=clash echo "$crashcore" | grep -q 'singbox' && core_old=singbox || core_old=clash
[ -n "$custcorelink" ] && custcore="$(echo $custcorelink | sed 's#.*github.com##; s#/releases/download/#@#; s#-linux.*$##')" [ -n "$custcorelink" ] && custcore="$(echo "$custcorelink" | sed 's#.*github.com##; s#/releases/download/#@#; s#-linux.*$##')"
### ###
echo "-----------------------------------------------" echo "-----------------------------------------------"
[ -z "$cpucore" ] && check_cpucore [ -z "$cpucore" ] && check_cpucore
@@ -508,8 +508,8 @@ setcore() {
getgeo() { #下载Geo文件 getgeo() { #下载Geo文件
#生成链接 #生成链接
echo "-----------------------------------------------" echo "-----------------------------------------------"
echo "正在从服务器获取数据库文件…………" echo "正在从服务器获取数据库文件......"
get_bin "$TMPDIR"/${geoname} bin/geodata/$geotype get_bin "$TMPDIR"/"${geoname}" bin/geodata/"$geotype"
if [ "$?" = "1" ]; then if [ "$?" = "1" ]; then
echo "-----------------------------------------------" echo "-----------------------------------------------"
echo -e "\033[31m文件下载失败\033[0m" echo -e "\033[31m文件下载失败\033[0m"
@@ -520,24 +520,24 @@ getgeo(){ #下载Geo文件
[ ! -d "$BINDIR"/ruleset ] && mkdir -p "$BINDIR"/ruleset [ ! -d "$BINDIR"/ruleset ] && mkdir -p "$BINDIR"/ruleset
} }
if echo "$geoname" | grep -Eq '.tar.gz'; then if echo "$geoname" | grep -Eq '.tar.gz'; then
tar -zxf "$TMPDIR"/${geoname} ${tar_para} -C "$BINDIR"/${geofile} > /dev/null tar -zxf "$TMPDIR"/"${geoname}" "${tar_para}" -C "$BINDIR"/"${geofile}" >/dev/null
[ $? -ne 0 ] && echo "文件解压失败!" && rm -rf "$TMPDIR"/${geoname} && exit 1 [ $? -ne 0 ] && echo "文件解压失败!" && rm -rf "$TMPDIR"/${geoname} && exit 1
rm -rf "$TMPDIR"/${geoname} rm -rf "$TMPDIR"/${geoname}
else else
mv -f "$TMPDIR"/${geoname} "$BINDIR"/${geofile}${geoname} mv -f "$TMPDIR"/"${geoname}" "$BINDIR"/"${geofile}""${geoname}"
fi fi
echo "-----------------------------------------------" echo "-----------------------------------------------"
echo -e "\033[32m$geotype数据库文件下载成功\033[0m" echo -e "\033[32m$geotype数据库文件下载成功\033[0m"
geo_v="$(echo $geotype | awk -F "." '{print $1}')_v" geo_v="$(echo "$geotype" | awk -F "." '{print $1}')_v"
setconfig $geo_v $GeoIP_v setconfig "$geo_v" "$GeoIP_v"
fi fi
sleep 1 sleep 1
} }
getcustgeo() { getcustgeo() {
echo "-----------------------------------------------" echo "-----------------------------------------------"
echo "正在获取数据库文件…………" echo "正在获取数据库文件......"
webget "$TMPDIR"/$geoname $custgeolink webget "$TMPDIR"/"$geoname" "$custgeolink"
if [ "$?" = "1" ]; then if [ "$?" = "1" ]; then
echo "-----------------------------------------------" echo "-----------------------------------------------"
echo -e "\033[31m文件下载失败\033[0m" echo -e "\033[31m文件下载失败\033[0m"
@@ -547,7 +547,7 @@ getcustgeo(){
geofile='ruleset/' geofile='ruleset/'
[ ! -d "$BINDIR"/ruleset ] && mkdir -p "$BINDIR"/ruleset [ ! -d "$BINDIR"/ruleset ] && mkdir -p "$BINDIR"/ruleset
} }
mv -f "$TMPDIR"/${geoname} "$BINDIR"/${geofile}${geoname} mv -f "$TMPDIR"/"${geoname}" "$BINDIR"/"${geofile}""${geoname}"
echo "-----------------------------------------------" echo "-----------------------------------------------"
echo -e "\033[32m$geotype数据库文件下载成功\033[0m" echo -e "\033[32m$geotype数据库文件下载成功\033[0m"
fi fi
@@ -578,9 +578,9 @@ checkcustgeo() {
[1-99]) [1-99])
if [ "$num" -le "$(wc -l <"$TMPDIR"/geo.list)" ]; then if [ "$num" -le "$(wc -l <"$TMPDIR"/geo.list)" ]; then
geotype=$(sed -n "$num"p "$TMPDIR"/geo.list) geotype=$(sed -n "$num"p "$TMPDIR"/geo.list)
[ -n "$(echo $geotype | grep -oiE 'GeoSite.*dat')" ] && geoname=GeoSite.dat [ -n "$(echo "$geotype" | grep -oiE 'GeoSite.*dat')" ] && geoname=GeoSite.dat
[ -n "$(echo $geotype | grep -oiE 'Country.*mmdb')" ] && geoname=Country.mmdb [ -n "$(echo "$geotype" | grep -oiE 'Country.*mmdb')" ] && geoname=Country.mmdb
[ -n "$(echo $geotype | grep -oiE '.*(.srs|.mrs)')" ] && geoname=$geotype [ -n "$(echo "$geotype" | grep -oiE '.*(.srs|.mrs)')" ] && geoname=$geotype
custgeolink=https://github.com/${project}/releases/download/${release_tag}/${geotype} custgeolink=https://github.com/${project}/releases/download/${release_tag}/${geotype}
getcustgeo getcustgeo
else else
@@ -737,7 +737,7 @@ setgeo() {
for var in Country_v cn_mini_v china_ip_list_v china_ipv6_list_v geosite_v geoip_cn_v geosite_cn_v mrs_geosite_cn_v srs_geoip_cn_v srs_geosite_cn_v mrs_v srs_v; do for var in Country_v cn_mini_v china_ip_list_v china_ipv6_list_v geosite_v geoip_cn_v geosite_cn_v mrs_geosite_cn_v srs_geoip_cn_v srs_geosite_cn_v mrs_v srs_v; do
setconfig $var setconfig $var
done done
rm -rf $CRASHDIR/ruleset/* rm -rf "$CRASHDIR"/ruleset/*
echo -e "\033[33m所有数据库文件均已清理\033[0m" echo -e "\033[33m所有数据库文件均已清理\033[0m"
sleep 1 sleep 1
} }
@@ -765,17 +765,17 @@ getdb() {
return 1 return 1
else else
echo -e "\033[33m下载成功正在解压文件\033[0m" echo -e "\033[33m下载成功正在解压文件\033[0m"
mkdir -p $dbdir >/dev/null mkdir -p "$dbdir" >/dev/null
tar -zxf "$TMPDIR/clashdb.tar.gz" ${tar_para} -C $dbdir >/dev/null tar -zxf "$TMPDIR/clashdb.tar.gz" "${tar_para}" -C "$dbdir" >/dev/null
[ $? -ne 0 ] && echo "文件解压失败!" && rm -rf "$TMPDIR"/clashfm.tar.gz && exit 1 [ $? -ne 0 ] && echo "文件解压失败!" && rm -rf "$TMPDIR"/clashfm.tar.gz && exit 1
#修改默认host和端口 #修改默认host和端口
if [ "$db_type" = "clashdb" -o "$db_type" = "meta_db" -o "$db_type" = "zashboard" ]; then if [ "$db_type" = "clashdb" -o "$db_type" = "meta_db" -o "$db_type" = "zashboard" ]; then
sed -i "s/127.0.0.1/${host}/g" $dbdir/assets/*.js sed -i "s/127.0.0.1/${host}/g" "$dbdir"/assets/*.js
sed -i "s/9090/${db_port}/g" $dbdir/assets/*.js sed -i "s/9090/${db_port}/g" "$dbdir"/assets/*.js
elif [ "$db_type" = "meta_xd" ]; then elif [ "$db_type" = "meta_xd" ]; then
sed -i "s/127.0.0.1:9090/${host}:${db_port}/g" $dbdir/_nuxt/*.js sed -i "s/127.0.0.1:9090/${host}:${db_port}/g" "$dbdir"/_nuxt/*.js
else else
sed -i "s/127.0.0.1:9090/${host}:${db_port}/g" $dbdir/*.html sed -i "s/127.0.0.1:9090/${host}:${db_port}/g" "$dbdir"/*.html
fi fi
#写入配置文件 #写入配置文件
setconfig hostdir "'$hostdir'" setconfig hostdir "'$hostdir'"
@@ -909,7 +909,7 @@ setdb() {
#根证书 #根证书
getcrt() { getcrt() {
echo "-----------------------------------------------" echo "-----------------------------------------------"
echo "正在连接服务器获取安装文件…………" echo "正在连接服务器获取安装文件......"
get_bin "$TMPDIR"/ca-certificates.crt bin/fix/ca-certificates.crt get_bin "$TMPDIR"/ca-certificates.crt bin/fix/ca-certificates.crt
if [ "$?" = "1" ]; then if [ "$?" = "1" ]; then
echo "-----------------------------------------------" echo "-----------------------------------------------"
@@ -917,13 +917,13 @@ getcrt(){
error_down error_down
else else
echo "-----------------------------------------------" echo "-----------------------------------------------"
[ "$systype" = 'mi_snapshot' ] && cp -f "$TMPDIR"/ca-certificates.crt $CRASHDIR/tools #镜像化设备特殊处理 [ "$systype" = 'mi_snapshot' ] && cp -f "$TMPDIR"/ca-certificates.crt "$CRASHDIR"/tools #镜像化设备特殊处理
[ -f $openssldir/certs ] && rm -rf $openssldir/certs #如果certs不是目录而是文件则删除并创建目录 [ -f "$openssldir"/certs ] && rm -rf "$openssldir"/certs #如果certs不是目录而是文件则删除并创建目录
mkdir -p $openssldir/certs mkdir -p "$openssldir"/certs
mv -f "$TMPDIR"/ca-certificates.crt $crtdir mv -f "$TMPDIR"/ca-certificates.crt "$crtdir"
webget /dev/null https://baidu.com echooff rediron skipceroff webget /dev/null https://baidu.com echooff rediron skipceroff
if [ "$?" = "1" ]; then if [ "$?" = "1" ]; then
export CURL_CA_BUNDLE=$crtdir export CURL_CA_BUNDLE="$crtdir"
echo "export CURL_CA_BUNDLE=$crtdir" >>/etc/profile echo "export CURL_CA_BUNDLE=$crtdir" >>/etc/profile
fi fi
echo -e "\033[32m证书安装成功\033[0m" echo -e "\033[32m证书安装成功\033[0m"
@@ -965,8 +965,8 @@ setcrt(){
# 写入配置文件 # 写入配置文件
saveserver() { saveserver() {
setconfig update_url "'$update_url'" setconfig update_url "'$update_url'"
setconfig url_id $url_id setconfig url_id "$url_id"
setconfig release_type $release_type setconfig release_type "$release_type"
version_new='' version_new=''
echo "-----------------------------------------------" echo "-----------------------------------------------"
echo -e "\033[32m源地址切换成功\033[0m" echo -e "\033[32m源地址切换成功\033[0m"
@@ -1067,7 +1067,7 @@ setserver() {
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
if [ -z "$num" -o "$num" = 0 ]; then if [ -z "$num" -o "$num" = 0 ]; then
continue continue
elif [ $num -le $(cat "$TMPDIR"/release_version 2>/dev/null | awk 'END{print NR}') ]; then elif [ "$num" -le $(cat "$TMPDIR"/release_version 2>/dev/null | awk 'END{print NR}') ]; then
release_type=$(cat "$TMPDIR"/release_version | awk '{print $1}' | sed -n "$num"p) release_type=$(cat "$TMPDIR"/release_version | awk '{print $1}' | sed -n "$num"p)
update_url='' update_url=''
saveserver saveserver