You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash脚本中用户输入与给定选项不匹配时如何输出错误提示

问题根因

  • 首先是条件判断逻辑错误:你当前用的||(或)逻辑永远为真:如果输入是<option a>,那它满足!= "<option b>"的条件,整个或判断就会触发;如果输入是<option b>,就满足!= "<option a>",同样会触发。你需要把||改成&&(且),才是表示「既不等于a也不等于b」的合法判断。
  • 其次是逻辑顺序问题:你需要保证每次循环先读取最新的用户输入,再走分支判断,不要复用旧的answer变量值,避免上一次输入的结果影响本次判断。

修正后的参考代码

#!/bin/bash
answer=""
until [[ "${answer}" = "exit" ]]
do
    # 每次循环先读取用户最新输入
    read -p "请输入选项: " answer
    # 匹配对应分支
    if [[ "${answer}" = "<option a>" ]]
    then
        # 这里放你原来的<option a>对应的业务逻辑
        echo "你选择了选项a"
    elif [[ "${answer}" = "<option b>" ]]
    then
        # 这里放你原来的<option b>对应的业务逻辑
        echo "你选择了选项b"
    elif [[ "${answer}" = "exit" ]]
    then
        echo "退出程序"
    else
        # 所有合法选项都没命中时才提示错误
        echo "Invalid input"
    fi
done

可选优化建议

如果你的选项后续会增加,可以用case语句替代多个if判断,可读性更高:

#!/bin/bash
answer=""
until [[ "${answer}" = "exit" ]]
do
    read -p "请输入选项: " answer
    case "${answer}" in
        "<option a>")
            echo "选项a的逻辑"
            ;;
        "<option b>")
            echo "选项b的逻辑"
            ;;
        "exit")
            echo "退出"
            ;;
        *)
            echo "Invalid input"
            ;;
    esac
done

内容的提问来源于stack exchange,提问作者Gpeffer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:45:04