Bash读取输入变量后比较时出现报错的问题求助
Bash脚本数值比较错误修复
你的脚本出现错误有两个核心原因:
[是Bash内置命令,必须和变量、运算符之间保留空格,]前面也需要空格,否则Shell会把["$X"这类字符串当成完整命令,导致找不到对应文件/命令。<和>在Shell中是文件重定向符号,不能直接用来做数值比较,否则会触发文件读写操作而非逻辑判断。
修正方案1:使用test命令的数值比较运算符
用-lt(小于)、-gt(大于)、-eq(等于)这些专门的数值比较符,配合正确的[ ]格式:
read X read Y if [ "$X" -lt "$Y" ]; then echo "X is less than Y" elif [ "$X" -gt "$Y" ]; then echo "X is greater than Y" else echo "X is equal to Y" fi
修正方案2:使用算术扩展(( ))(更简洁直观)
(( ))是Bash的算术表达式语法,支持直接用<、>、==做数值比较:
read X read Y if (( X < Y )); then echo "X is less than Y" elif (( X > Y )); then echo "X is greater than Y" else echo "X is equal to Y" fi
另外注意原脚本里的y是小写,建议统一成大写Y保持语义一致。
内容的提问来源于stack exchange,提问作者Teja Reddy
相关产品推荐
相关产品推荐

