mirror of
https://github.com/juewuy/ShellCrash.git
synced 2026-03-12 00:11:31 +00:00
Merge pull request #1104 from sofia-riese/patch-7
refactor: replace recursion with while loop in setdir
This commit is contained in:
210
install.sh
210
install.sh
@@ -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
|
||||||
set_asus_dir() {
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
set_cust_dir() {
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
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,112 +138,123 @@ 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
|
||||||
echo "-----------------------------------------------"
|
done
|
||||||
$echo "\033[33m注意:安装ShellCrash至少需要预留约1MB的磁盘空间\033[0m"
|
}
|
||||||
if [ -n "$systype" ]; then
|
|
||||||
[ "$systype" = "Padavan" ] && dir=/etc/storage
|
setdir() {
|
||||||
[ "$systype" = "mi_snapshot" ] && {
|
while true; do
|
||||||
$echo "\033[33m检测到当前设备为小米官方系统,请选择安装位置\033[0m"
|
echo "-----------------------------------------------"
|
||||||
[ -d /data ] && $echo " 1 安装到 /data 目录,剩余空间:$(dir_avail /data -h)(支持软固化功能)"
|
$echo "\033[33m注意:安装ShellCrash至少需要预留约1MB的磁盘空间\033[0m"
|
||||||
[ -d /userdisk ] && $echo " 2 安装到 /userdisk 目录,剩余空间:$(dir_avail /userdisk -h)(支持软固化功能)"
|
if [ -n "$systype" ]; then
|
||||||
[ -d /data/other_vol ] && $echo " 3 安装到 /data/other_vol 目录,剩余空间:$(dir_avail /data/other_vol -h)(支持软固化功能)"
|
[ "$systype" = "Padavan" ] && dir=/etc/storage
|
||||||
$echo " 4 安装到自定义目录(不推荐,不明勿用!)"
|
[ "$systype" = "mi_snapshot" ] && {
|
||||||
|
$echo "\033[33m检测到当前设备为小米官方系统,请选择安装位置\033[0m"
|
||||||
|
[ -d /data ] && $echo " 1 安装到 /data 目录,剩余空间:$(dir_avail /data -h)(支持软固化功能)"
|
||||||
|
[ -d /userdisk ] && $echo " 2 安装到 /userdisk 目录,剩余空间:$(dir_avail /userdisk -h)(支持软固化功能)"
|
||||||
|
[ -d /data/other_vol ] && $echo " 3 安装到 /data/other_vol 目录,剩余空间:$(dir_avail /data/other_vol -h)(支持软固化功能)"
|
||||||
|
$echo " 4 安装到自定义目录(不推荐,不明勿用!)"
|
||||||
|
$echo " 0 退出安装"
|
||||||
|
echo "-----------------------------------------------"
|
||||||
|
read -p "请输入相应数字 > " num
|
||||||
|
case "$num" in
|
||||||
|
1)
|
||||||
|
dir=/data
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
dir=/userdisk
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
dir=/data/other_vol
|
||||||
|
;;
|
||||||
|
4)
|
||||||
|
set_cust_dir
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
[ "$systype" = "asusrouter" ] && {
|
||||||
|
$echo "\033[33m检测到当前设备为华硕固件,请选择安装方式\033[0m"
|
||||||
|
$echo " 1 基于USB设备安装(限23年9月之前固件,须插入\033[31m任意\033[0mUSB设备)"
|
||||||
|
$echo " 2 基于自启脚本安装(仅支持梅林及部分非koolshare官改固件)"
|
||||||
|
$echo " 3 基于U盘+下载大师安装(支持所有固件,限ARM设备,须插入U盘或移动硬盘)"
|
||||||
|
$echo " 0 退出安装"
|
||||||
|
echo "-----------------------------------------------"
|
||||||
|
read -p "请输入相应数字 > " num
|
||||||
|
case "$num" in
|
||||||
|
1)
|
||||||
|
read -p "将脚本安装到USB存储/系统闪存?(1/0) > " res
|
||||||
|
[ "$res" = "1" ] && set_usb_dir || dir=/jffs
|
||||||
|
usb_status=1
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
$echo "如无法正常开机启动,请重新使用USB方式安装!"
|
||||||
|
sleep 2
|
||||||
|
dir=/jffs
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
echo -e "请先在路由器网页后台安装下载大师并启用,之后选择外置存储所在目录!"
|
||||||
|
sleep 2
|
||||||
|
set_asus_dir
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
[ "$systype" = "ng_snapshot" ] && dir=/tmp/mnt
|
||||||
|
else
|
||||||
|
$echo " 1 在\033[32m/etc目录\033[0m下安装(适合root用户)"
|
||||||
|
$echo " 2 在\033[32m/usr/share目录\033[0m下安装(适合Linux系统)"
|
||||||
|
$echo " 3 在\033[32m当前用户目录\033[0m下安装(适合非root用户)"
|
||||||
|
$echo " 4 在\033[32m外置存储\033[0m中安装"
|
||||||
|
$echo " 5 手动设置安装目录"
|
||||||
$echo " 0 退出安装"
|
$echo " 0 退出安装"
|
||||||
echo "-----------------------------------------------"
|
echo "----------------------------------------------"
|
||||||
read -p "请输入相应数字 > " num
|
read -p "请输入相应数字 > " num
|
||||||
|
# 设置目录
|
||||||
case "$num" in
|
case "$num" in
|
||||||
1)
|
1)
|
||||||
dir=/data
|
dir=/etc
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
dir=/userdisk
|
dir=/usr/share
|
||||||
;;
|
;;
|
||||||
3)
|
3)
|
||||||
dir=/data/other_vol
|
dir=~/.local/share
|
||||||
|
mkdir -p ~/.config/systemd/user
|
||||||
;;
|
;;
|
||||||
4)
|
4)
|
||||||
|
set_usb_dir
|
||||||
|
;;
|
||||||
|
5)
|
||||||
set_cust_dir
|
set_cust_dir
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
echo "安装已取消"
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
fi
|
||||||
[ "$systype" = "asusrouter" ] && {
|
|
||||||
$echo "\033[33m检测到当前设备为华硕固件,请选择安装方式\033[0m"
|
|
||||||
$echo " 1 基于USB设备安装(限23年9月之前固件,须插入\033[31m任意\033[0mUSB设备)"
|
|
||||||
$echo " 2 基于自启脚本安装(仅支持梅林及部分非koolshare官改固件)"
|
|
||||||
$echo " 3 基于U盘+下载大师安装(支持所有固件,限ARM设备,须插入U盘或移动硬盘)"
|
|
||||||
$echo " 0 退出安装"
|
|
||||||
echo "-----------------------------------------------"
|
|
||||||
read -p "请输入相应数字 > " num
|
|
||||||
case "$num" in
|
|
||||||
1)
|
|
||||||
read -p "将脚本安装到USB存储/系统闪存?(1/0) > " res
|
|
||||||
[ "$res" = "1" ] && set_usb_dir || dir=/jffs
|
|
||||||
usb_status=1
|
|
||||||
;;
|
|
||||||
2)
|
|
||||||
$echo "如无法正常开机启动,请重新使用USB方式安装!"
|
|
||||||
sleep 2
|
|
||||||
dir=/jffs
|
|
||||||
;;
|
|
||||||
3)
|
|
||||||
echo -e "请先在路由器网页后台安装下载大师并启用,之后选择外置存储所在目录!"
|
|
||||||
sleep 2
|
|
||||||
set_asus_dir
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
[ "$systype" = "ng_snapshot" ] && dir=/tmp/mnt
|
|
||||||
else
|
|
||||||
$echo " 1 在\033[32m/etc目录\033[0m下安装(适合root用户)"
|
|
||||||
$echo " 2 在\033[32m/usr/share目录\033[0m下安装(适合Linux系统)"
|
|
||||||
$echo " 3 在\033[32m当前用户目录\033[0m下安装(适合非root用户)"
|
|
||||||
$echo " 4 在\033[32m外置存储\033[0m中安装"
|
|
||||||
$echo " 5 手动设置安装目录"
|
|
||||||
$echo " 0 退出安装"
|
|
||||||
echo "----------------------------------------------"
|
|
||||||
read -p "请输入相应数字 > " num
|
|
||||||
#设置目录
|
|
||||||
case "$num" in
|
|
||||||
1)
|
|
||||||
dir=/etc
|
|
||||||
;;
|
|
||||||
2)
|
|
||||||
dir=/usr/share
|
|
||||||
;;
|
|
||||||
3)
|
|
||||||
dir=~/.local/share
|
|
||||||
mkdir -p ~/.config/systemd/user
|
|
||||||
;;
|
|
||||||
4)
|
|
||||||
set_usb_dir
|
|
||||||
;;
|
|
||||||
5)
|
|
||||||
set_cust_dir
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "安装已取消"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -w $dir ]; then
|
if [ ! -w $dir ]; then
|
||||||
$echo "\033[31m没有$dir目录写入权限!请重新设置!\033[0m" && sleep 1 && setdir
|
$echo "\033[31m没有$dir目录写入权限!请重新设置!\033[0m"
|
||||||
else
|
sleep 1
|
||||||
$echo "目标目录\033[32m$dir\033[0m空间剩余:$(dir_avail $dir -h)"
|
else
|
||||||
read -p "确认安装?(1/0) > " res
|
$echo "目标目录\033[32m$dir\033[0m空间剩余:$(dir_avail $dir -h)"
|
||||||
[ "$res" = "1" ] && CRASHDIR=$dir/ShellCrash || setdir
|
read -p "确认安装?(1/0) > " res
|
||||||
fi
|
if [ "$res" = "1" ]; then
|
||||||
|
CRASHDIR=$dir/ShellCrash
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
install() {
|
install() {
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo 开始从服务器获取安装文件!
|
echo 开始从服务器获取安装文件!
|
||||||
|
|||||||
Reference in New Issue
Block a user