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

Bash脚本执行无输出且陷入死循环,求问题原因及解决方法

问题分析与修复方案

你的脚本存在几个关键错误,导致出现无限运行且无输出的问题:

1. 使用了中文引号

脚本里的 “$@“ 是中文双引号,Bash无法正确解析,会把所有参数当成一个异常的整体字符串,引发解析错误。必须替换为英文双引号:

for x in "$@"

2. if条件判断语法完全错误

Bash的条件判断有严格语法规则:

  • 变量必须加$符号引用,即$x而非x
  • 数值相等判断要用-eq,字符串相等用==,且运算符两边必须留空格
  • 条件必须包裹在[ ]或[[ ]]中

原脚本的if x = 0; 完全不符合语法,正确写法示例:

if [ $x -eq 0 ]; then
    echo "False"
elif [ $x -eq 1 ]; then
    echo "True"
fi

或者更现代的[[ ]]写法:

if [[ $x == 0 ]]; then
    echo "False"
elif [[ $x == 1 ]]; then
    echo "True"
fi

3. TextEdit的格式陷阱

TextEdit默认会自动替换引号为智能弯引号(类似中文引号),保存脚本时一定要切换到纯文本模式(菜单栏→格式→制作纯文本),避免这类隐形格式错误。

修复后的完整脚本

for x in "$@"
do
    if [ $x -eq 0 ]; then
        echo "False"
    elif [ $x -eq 1 ]; then
        echo "True"
    fi
done

运行修复后的脚本,输入sh TestBash.sh 0 1 0 1就能得到预期输出:

False
True
False
True

内容的提问来源于stack exchange,提问作者Anna Jacobsen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:30:53