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

Linux Bash脚本for循环搭配if条件的错误排查

问题原因与修复方案

你的脚本之所以会输出1到99的全部数字,核心有两个错误:

  • 变量未正确引用:你写的i%2里的i没有加$前缀,Bash会把它当成纯字符串"i%2",而不是变量$i的实际值。
  • 算术比较的语法错误:[(也就是test命令)不支持直接解析算术表达式,你写的i%2 != 0本质是在做字符串比较——"i%2"和"0"显然不相等,所以if条件永远为真,所有数字都会被输出。

修复后的脚本写法(两种可选)

写法一:用(( ))做算术判断(推荐,语法更简洁)

#!/bin/bash

for i in {1..99}
do
    if (( i % 2 != 0 )); then 
        echo $i
    fi
done

写法二:用$(( ))展开算术结果后做比较

#!/bin/bash

for i in {1..99}
do
    if [ $((i % 2)) -ne 0 ]; then 
        echo $i
    fi
done

另外,你还可以直接简化循环逻辑,不需要额外的if判断:

#!/bin/bash

for i in {1..99..2}
do
    echo $i
done

这里{1..99..2}表示从1到99,步长设为2,直接生成所有奇数,代码更简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:52:04