XML0501 2020-10-22 14:20 采纳率: 0%
浏览 67

shell编程中使用case的应用案例出错

用if语句判断正确,但换做使用case语句就会报错,不知道什么原因导致,
请各位大神赐教

cpu=`grep '^vendor_id' /proc/cpuinfo |head -1 |awk -F ':' '{print $2}'`
case $cpu in
AuthenticAMD)
        echo "CPU厂商为AMD公司"
        ;;
 GenuineIntel)
        echo "CPU厂商为英特尔公司"
        ;;
 *)
        echo "CPU厂商为其他非主流公司"
    ;;
esac

判断结果应该是英特尔公司,但却显示是非主流公司,不过已用if语句验证过,所以cpu变量查找应该不会有问题,出错的就是case语句上,什么原因呢?

  • 写回答

1条回答 默认 最新

  • lshen01 2023-03-16 18:39
    关注

    参考GPT和自己的思路:

    根据您的描述,可能是因为cpu变量的值包含了空格或其他特殊字符,导致case语句无法正确匹配。您可以尝试在case语句中加上双引号引用变量,如下所示:

    case "$cpu" in
    AuthenticAMD)
            echo "CPU厂商为AMD公司"
            ;;
     GenuineIntel)
            echo "CPU厂商为英特尔公司"
            ;;
     *)
            echo "CPU厂商为其他非主流公司"
        ;;
    esac
    

    这样可以将变量作为整体进行匹配,可以解决因为特殊字符或空格导致的匹配失败问题。希望对您有所帮助!

    评论

报告相同问题?