11#! /bin/bash
22
3+ # ## === 脚本描述 === ###
4+ # 脚本名称: reinstall.sh
5+ # 功能: reinstall 的交互式脚本,可以选择自己安装的系统。
6+ # 作者: rouxyang <https://www.nodeseek.com/space/29457>
7+ # 创建日期: 2025-04-20
8+ # 许可证: MIT
9+
310# ## === 版本信息 === ###
4- SCRIPT_VERSION=" 0.0.1"
11+ SCRIPT_VERSION=" 0.0.2"
12+ SCRIPT_NAME=" reinstall交互式安装脚本"
13+ SCRIPT_AUTHOR=" [@Rouxyang] <https://www.nodeseek.com/space/29457>"
14+
15+ echo -e " \033[33m[信息] $SCRIPT_NAME ,版本: $SCRIPT_VERSION \033[0m"
16+ echo -e " \033[33m[作者] $SCRIPT_AUTHOR \033[0m"
17+
18+ # ## === 退出状态码 === ###
19+ EXIT_SUCCESS=0
20+ EXIT_ERROR=1
21+ EXIT_INTERRUPT=130 # Ctrl+C 退出码
522
623# ## === 权限检查 === ###
724[[ $EUID -ne 0 ]] && echo -e " \033[31m[错误] 请以root用户或sudo运行此脚本!\033[0m" && exit 1
825
26+ # ## === 颜色定义 === ###
27+ RED=' \033[0;31m'
28+ GREEN=' \033[0;32m'
29+ YELLOW=' \033[0;33m'
30+ CYAN=' \033[0;36m'
31+ NC=' \033[0m'
32+
33+ # ## === 彩色输出函数 === ###
34+ success () { printf " ${GREEN} %b${NC} ${@: 2} \n" " $1 " ; }
35+ info () { printf " ${CYAN} %b${NC} ${@: 2} \n" " $1 " ; }
36+ danger () { printf " \n${RED} [错误] %b${NC} \n" " $@ " ; }
37+ warn () { printf " ${YELLOW} [警告] %b${NC} \n" " $@ " ; }
38+
39+ # ## === 信号捕获 === ###
40+ cleanup () {
41+ log " INFO" " 脚本被中断..."
42+ echo -e " ${YELLOW} [警告] 脚本已退出!${NC} "
43+ exit $EXIT_INTERRUPT
44+ }
45+ trap cleanup SIGINT SIGTERM
46+
47+
48+
949# ## === 工具检查 === ###
1050check_dependencies () {
1151 for tool in curl wget; do
@@ -16,18 +56,7 @@ check_dependencies() {
1656 done
1757}
1858
19- # ## === 颜色与提示函数 === ###
20- GREEN=' \033[32m'
21- RED=' \033[31m'
22- YELLOW=' \033[33m'
23- BLUE=' \033[34m'
24- BOLD=' \033[1m'
25- NC=' \033[0m'
2659
27- info () { echo -e " ${BLUE} [信息]${NC} $1 " ; }
28- success () { echo -e " ${GREEN} [成功]${NC} $1 " ; }
29- warning () { echo -e " ${YELLOW} [提示]${NC} $1 " ; }
30- error () { echo -e " ${RED} [错误]${NC} $1 " ; }
3160
3261# ## === 变量定义 === ###
3362SYSTEM=" "
@@ -41,31 +70,38 @@ MODE=""
4170# ## === 系统选择 === ###
4271select_system () {
4372 SYSTEMS=(" ubuntu" " debian" " centos" " alpine" " kali" " almalinux" " rocky" " arch" " fedora" " opensuse" " oracle"
44- " windows" " dd" " alpine-live" " netboot.xyz" )
73+ " redhat" " anolis" " opencloudos" " almalinux" " nixos" " openeuler"
74+ " windows" " dd" " alpine-live" " netboot.xyz" )
4575
4676 info " 请选择安装模式或系统:"
4777 select SYSTEM in " ${SYSTEMS[@]} " ; do
4878 if [[ -n " $SYSTEM " ]]; then
4979 success " 已选择系统/模式:$SYSTEM "
5080 break
5181 else
52- warning " 无效选择,请重试"
82+ warn " 无效选择,请重试"
5383 fi
5484 done
5585}
5686
5787# ## === 版本选择 === ###
5888select_version () {
5989 declare -A VERSIONS
60- VERSIONS[" ubuntu" ]=" 24.10 24.04 22.04 20.04 18.04 16.04"
90+ VERSIONS[" ubuntu" ]=" 25.04 24.04 22.04 20.04 18.04 16.04"
6191 VERSIONS[" debian" ]=" 12 11 10 9"
62- VERSIONS[" centos" ]=" 10 9 8 7 "
92+ VERSIONS[" centos" ]=" 10 9"
6393 VERSIONS[" alpine" ]=" 3.21 3.20 3.19 3.18"
64- VERSIONS[" fedora" ]=" 41 40 39 "
94+ VERSIONS[" fedora" ]=" 42 41 "
6595 VERSIONS[" opensuse" ]=" tumbleweed 15.6"
6696 VERSIONS[" almalinux" ]=" 9 8"
6797 VERSIONS[" rocky" ]=" 9 8"
6898 VERSIONS[" oracle" ]=" 9 8"
99+ VERSIONS[" redhat" ]=" 9 8"
100+ VERSIONS[" anolis" ]=" 23 8 7"
101+ VERSIONS[" opencloudos" ]=" 23 9 8"
102+ VERSIONS[" almalinux" ]=" 9 8"
103+ VERSIONS[" nixos" ]=" 24.11"
104+ VERSIONS[" openeuler" ]=" 25.03 24.03 22.03 20.03"
69105
70106 if [[ -n " ${VERSIONS[$SYSTEM]} " ]]; then
71107 info " 请选择版本或手动输入:"
@@ -80,7 +116,7 @@ select_version() {
80116 VERSION=" $CHOICE "
81117 break
82118 else
83- warning " 无效选择,请重试"
119+ warn " 无效选择,请重试"
84120 fi
85121 done
86122 else
@@ -90,7 +126,7 @@ select_version() {
90126
91127# ## === 获取密码 === ###
92128get_password () {
93- warning " 请输入密码(留空则使用默认密码):"
129+ warn " 请输入密码(留空则使用默认密码):"
94130 read -rs PASSWORD
95131 echo
96132 if [[ -z " $PASSWORD " ]]; then
@@ -157,7 +193,7 @@ confirm_and_execute() {
157193 success " 开始执行安装..."
158194 eval " $CMD "
159195 else
160- warning " 已取消安装流程"
196+ warn " 已取消安装流程"
161197 exit 0
162198 fi
163199}
0 commit comments