好像没有什么必要写脚本,但是水一贴吧

#!/bin/bash# 检查是否为root权限if [ "$(id -u)" != "0" ]; then    echo "错误:此脚本需要root权限执行" >&2    echo "请使用 sudo 执行此脚本"    exit 1fi# 交互式获取新主机名while true; do    read -p "请输入新的主机名: " NEW_HOSTNAME        # 检查是否输入了内容    if [ -z "$NEW_HOSTNAME" ]; then        echo "错误:主机名不能为空,请重新输入" >&2        continue    fi        # 验证主机名格式(只允许字母、数字、连字符)    if ! echo "$NEW_HOSTNAME" | grep -qE '^[a-zA-Z0-9-]+$'; then        echo "错误:主机名只能包含字母、数字和连字符,请重新输入" >&2        continue    fi        breakdone# 备份原始文件echo "正在备份原始配置文件..."cp /etc/hostname /etc/hostname.bak 2>/dev/nullcp /etc/hosts /etc/hosts.bak 2>/dev/null# 修改主机名echo "正在修改主机名..."echo "$NEW_HOSTNAME" > /etc/hostname# 更新hosts文件 - 自动检测并处理两种情况echo "正在更新hosts文件..."# 检查hosts文件中是否已有127.0.1.1if grep -q "^127\.0\.1\.1" /etc/hosts; then    # 如果存在127.0.1.1,则替换它    sed -i "s/^127\.0\.1\.1.*$/127.0.1.1\t$NEW_HOSTNAME/" /etc/hosts    echo "✓ 已更新127.0.1.1的映射"else    # 如果只有127.0.0.1,则在localhost行后添加新行    sed -i "/^127\.0\.0\.1\s\+localhost\s*$/a 127.0.1.1\t$NEW_HOSTNAME" /etc/hosts    echo "✓ 已添加127.0.1.1的映射"fi# 设置主机名(立即生效)hostnamectl set-hostname "$NEW_HOSTNAME"# 显示结果echo ""echo "✓ 主机名已修改成功!"echo "✓ 当前主机名: $(hostname)"echo "✓ 持久化主机名: $(cat /etc/hostname)"echo ""echo "修改后的hosts文件内容:"echo "========================"cat /etc/hostsecho "========================"# 询问是否立即重启read -p "是否立即重启系统使更改完全生效?[y/N] " -n 1 -rechoif [[ $REPLY =~ ^[Yy]$ ]]; then    echo "系统即将重启..."    rebootelse    echo "请手动重启系统以使更改完全生效"fi