Ubuntu 21.10下Bash脚本条件判断异常问题求助
问题排查与修复
你的脚本问题出在条件判断的语法错误上:你把算术判断的(( ))嵌套在了[[ ]]里,导致当a=10时,条件判断没有正确触发over输出。
错误原因
Bash中,[[ ]]是用于条件测试的结构,而(( ))是专门的算术表达式求值/判断语法,两者不能嵌套使用。原脚本里的[[ (($a>8)) ]]写法不符合Bash语法规范,导致判断逻辑失效。
修复方案
提供两种正确的写法:
方案1:使用(( ))进行算术判断
for a in {1..10};do if (( a > 8 )) then echo "over" else echo "$a" fi done
方案2:使用[[ ]]的整数比较运算符-gt
for a in {1..10};do if [[ $a -gt 8 ]] then echo "over" else echo "$a" fi done
执行任意一种修复后的脚本,都会得到正确输出:
1 2 3 4 5 6 7 8 over over
内容的提问来源于stack exchange,提问作者synapsis
相关产品推荐
相关产品推荐

