Merge pull request #1104 from sofia-riese/patch-7

refactor: replace recursion with while loop in setdir
This commit is contained in:
juewuy
2026-01-10 09:36:55 +08:00
committed by GitHub

View File

@@ -100,28 +100,37 @@ gettar() {
fi fi
fi fi
} }
setdir() {
set_usb_dir() { set_usb_dir() {
while true; do
$echo "请选择安装目录" $echo "请选择安装目录"
du -hL /mnt | awk '{print " "NR" "$2" "$1}' du -hL /mnt | awk '{print " "NR" "$2" "$1}'
read -p "请输入相应数字 > " num read -p "请输入相应数字 > " num
dir=$(du -hL /mnt | awk '{print $2}' | sed -n "$num"p) dir=$(du -hL /mnt | awk '{print $2}' | sed -n "$num"p)
if [ -z "$dir" ]; then if [ -z "$dir" ]; then
$echo "\033[31m输入错误请重新设置\033[0m" $echo "\033[31m输入错误请重新设置\033[0m"
set_usb_dir continue
fi fi
break 1
done
} }
set_asus_dir() { set_asus_dir() {
while true; do
echo -e "请选择U盘目录" echo -e "请选择U盘目录"
du -hL /tmp/mnt | awk -F/ 'NF<=4' | awk '{print " "NR" "$2" "$1}' du -hL /tmp/mnt | awk -F/ 'NF<=4' | awk '{print " "NR" "$2" "$1}'
read -p "请输入相应数字 > " num read -p "请输入相应数字 > " num
dir=$(du -hL /tmp/mnt | awk -F/ 'NF<=4' | awk '{print $2}' | sed -n "$num"p) dir=$(du -hL /tmp/mnt | awk -F/ 'NF<=4' | awk '{print $2}' | sed -n "$num"p)
if [ ! -f "$dir/asusware.arm/etc/init.d/S50downloadmaster" ]; then if [ ! -f "$dir/asusware.arm/etc/init.d/S50downloadmaster" ]; then
echo -e "\033[31m未找到下载大师自启文件$dir/asusware.arm/etc/init.d/S50downloadmaster请检查设置\033[0m" echo -e "\033[31m未找到下载大师自启文件$dir/asusware.arm/etc/init.d/S50downloadmaster请检查设置\033[0m"
set_asus_dir continue
fi fi
break 1
done
} }
set_cust_dir() { set_cust_dir() {
while true; do
echo "-----------------------------------------------" echo "-----------------------------------------------"
echo '可用路径 剩余空间:' echo '可用路径 剩余空间:'
df -h | awk '{print $6,$4}' | sed 1d df -h | awk '{print $6,$4}' | sed 1d
@@ -129,9 +138,14 @@ setdir() {
read -p "请输入自定义路径 > " dir read -p "请输入自定义路径 > " dir
if [ "$(dir_avail $dir)" = 0 ] || [ -n "$(echo $dir | grep -E 'tmp|opt|sys')" ]; then if [ "$(dir_avail $dir)" = 0 ] || [ -n "$(echo $dir | grep -E 'tmp|opt|sys')" ]; then
$echo "\033[31m路径错误请重新设置\033[0m" $echo "\033[31m路径错误请重新设置\033[0m"
set_cust_dir continue
fi fi
break 1
done
} }
setdir() {
while true; do
echo "-----------------------------------------------" echo "-----------------------------------------------"
$echo "\033[33m注意安装ShellCrash至少需要预留约1MB的磁盘空间\033[0m" $echo "\033[33m注意安装ShellCrash至少需要预留约1MB的磁盘空间\033[0m"
if [ -n "$systype" ]; then if [ -n "$systype" ]; then
@@ -228,13 +242,19 @@ setdir() {
fi fi
if [ ! -w $dir ]; then if [ ! -w $dir ]; then
$echo "\033[31m没有$dir目录写入权限!请重新设置!\033[0m" && sleep 1 && setdir $echo "\033[31m没有$dir目录写入权限!请重新设置!\033[0m"
sleep 1
else else
$echo "目标目录\033[32m$dir\033[0m空间剩余$(dir_avail $dir -h)" $echo "目标目录\033[32m$dir\033[0m空间剩余$(dir_avail $dir -h)"
read -p "确认安装?(1/0) > " res read -p "确认安装?(1/0) > " res
[ "$res" = "1" ] && CRASHDIR=$dir/ShellCrash || setdir if [ "$res" = "1" ]; then
CRASHDIR=$dir/ShellCrash
break
fi fi
fi
done
} }
install() { install() {
echo "-----------------------------------------------" echo "-----------------------------------------------"
echo 开始从服务器获取安装文件! echo 开始从服务器获取安装文件!