如果你想在Shell脚本中实现一个循环判断用户输入是否正确,并根据情况决定是否退出系统,可以使用一个无限循环(如while true)和条件语句来实现。

以下是一个示例代码,用于演示这种情况:

#!/bin/bash

echo "欢迎进入系统"

while true; do
echo "请输入选项:"
echo "1. 执行操作A"
echo "2. 执行操作B"
echo "3. 退出系统"

read choice

case $choice in
1)
echo "执行操作A"
# 这里可以写下执行操作A的代码
;;
2)
echo "执行操作B"
# 这里可以写下执行操作B的代码
;;
3)
echo "确认退出系统?(Y/N)"
read confirm

if [[ $confirm == "Y" || $confirm == "y" ]]; then
echo "正在退出系统..."
exit 0 # 正常退出,状态码为0
else
continue # 继续循环,回到上面的提示输入选项步骤
fi
;;
*)
echo "无效选项,请重新输入。"
continue # 继续循环,回到上面的提示输入选项步骤
;;
esac

# 执行完操作后继续循环,回到上面的提示输入选项步骤
done

# 如果需要,在此处添加其他代码...
  • 举个例子

[root@master01 test]# cat mainMnue.sh
#!/bin/bash

function MainMenu() {

echo "欢迎进入系统"

while true; do
cat << EOF

1.打飞机自行解决
2.出钱和我干一炮
3.你长的太帅了,我自己脱裤子
4.鸡巴好长,操死我!
5.不忍直视,回家玩泥巴去吧你!
6.退出
EOF

read -p "Beautiful Gial, Please Enter Your Choice!" key

case $key in
1)
echo "打飞机自行解决"
;;
2)
echo "出钱和我干一炮"
;;
3)
echo "你长的太帅了,我自己脱裤子"
;;
4)
echo "鸡巴好长,操死我!"
;;
5)
echo "不忍直视,回家玩泥巴去吧你!"
;;
6)
read -p "您是否确认退出?[Y/N]" key2
if [[ "$key2" = "Y" || "$key2" = "y" ]];then
echo "正在退出系统..."
exit 0 # 正常退出,状态码为0
elif [[ "$key2" = "N" || "$key2" = "n" ]];then
continue # 继续循环,回到上面的提示输入选项步骤
else
exit 1 # 异常退出,状态码为非零值(通常为2)
fi
;;
*)
echo "您的输入有误,请重新运行脚本并选择正确的选项。"
exit 2 # 异常退出,状态码为非零值(通常为1)
;;
esac
done
}

MainMenu

本人从事IT行业,目前在企业做私有云,擅长openstack、ceph、k8s、python等技术,欢迎一起学习!