zsh脚本字符串比较条件判断异常问题求助
问题排查与修复
你的脚本错误出在字符串比较误用了整数运算符:
在zsh的[[ ... ]]条件判断中,-eq是专门用于整数数值比较的运算符。当你用它比较字符串时,zsh会尝试将字符串转换为整数,转换失败后会触发非预期行为:
- 输入"A"时,两个无法转换的字符串被判定为等效数值,条件成立输出正确;
- 输入"B"时,因zsh对不同非数字字符串的解析差异,条件不成立输出错误;
- 输入"C"、"f"等其他字符时,同样被判定为与"A"等效的数值,错误输出"Correct answer!!"。
修复方法
将整数比较运算符-eq替换为zsh中用于字符串比较的==(或=,两者在[[ ... ]]中行为一致):
#!/bin/zsh # Author: Cristhian Rodriguez # Conditional statement OPTION="" read OPTION\?"Input an option (A or B): " if [[ $OPTION == "A" ]]; then echo "Correct answer!!" else echo "Wrong answer!!" fi
测试验证
修复后测试各输入,结果符合预期:
Input an option (A or B): A // Correct answer!! Input an option (A or B): B // Wrong answer!! Input an option (A or B): C // Wrong answer!! Input an option (A or B): f // Wrong answer!!
内容的提问来源于stack exchange,提问作者CristhianR
相关产品推荐
相关产品推荐

