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

Bash脚本报错syntax error: unexpected end of file,求排查解决

脚本错误分析与修正

你的脚本存在多处Bash语法问题,正是这些问题引发了syntax error: unexpected end of file及其他潜在错误,以下是具体问题和修正方案:

1. 首个if语句语法错误且缺失闭合fi

原代码:

if ( $EXPR == "EXIT" ) then exit 0

Bash中if的正确语法为if [ 条件 ]; then或if [[ 条件 ]]; then,且每个if必须用fi闭合。此处不仅语法错误,还未添加闭合fi,直接导致脚本无法正常结束。
修正为:

if [[ "$EXPR" == "EXIT" ]]; then
    exit 0
fi

2. 环境变量赋值错误

原代码:

$IFS=' '

变量赋值时无需加$,修正为:

IFS=' '

3. 变量赋值存在多余空格

Bash中变量赋值不能有空格,原代码:

result = 0

修正为:

result=0

后续所有result = ...的写法都要去掉空格。

4. 条件判断的语法规范问题

  • [/]与内部表达式之间必须留空格,比如[$arr[1] == '+']要改为[ "${arr[1]}" == '+' ]
  • 数组元素引用必须写成${arr[1]},而非$arr[1]
  • 在[ ]中逻辑与需用-a,若想用&&,建议改用[[ ]](更灵活的扩展条件判断语法)

原条件判断代码:

if [ $arr[1] != '+' && $arr[1] != '-' && $arr[1] != '*' && $arr[1] != '/' ]

修正为:

if [[ "${arr[1]}" != '+' && "${arr[1]}" != '-' && "${arr[1]}" != '*' && "${arr[1]}" != '/' ]]

5. 算术运算的正确写法

Bash中直接写result= $arr[0] + $arr[2]无法完成计算,必须用$((...))包裹算术表达式,例如加法:

result=$(( ${arr[0]} + ${arr[2]} ))

减法、乘法、除法均需遵循此规则。

6. 除数为0的判断逻辑缺失终止步骤

原代码中判断除数为0后仅打印错误,但仍会执行除法运算,引发额外错误,需添加终止逻辑:

if [[ "${arr[2]}" == '0' ]]; then
    echo "MATH ERROR"
    exit 1
fi

修正后的完整脚本

#!/bin/bash

echo "Enter the input in the form of 'number' 'operation' 'number' "

read EXPR
if [[ "$EXPR" == "EXIT" ]]; then
    exit 0
fi

IFS=' '
read -ra arr <<< "$EXPR"
result=0

if [[ "${arr[1]}" != '+' && "${arr[1]}" != '-' && "${arr[1]}" != '*' && "${arr[1]}" != '/' ]]; then
    echo "syntax error"
    exit 1
fi

if [[ "${arr[1]}" == '+' ]]; then
    result=$(( ${arr[0]} + ${arr[2]} ))
fi

if [[ "${arr[1]}" == '-' ]]; then
    result=$(( ${arr[0]} - ${arr[2]} ))
fi

if [[ "${arr[1]}" == '*' ]]; then
    result=$(( ${arr[0]} * ${arr[2]} ))
fi

if [[ "${arr[1]}" == '/' ]]; then
    if [[ "${arr[2]}" == '0' ]]; then
        echo "MATH ERROR"
        exit 1
    fi
    result=$(( ${arr[0]} / ${arr[2]} ))
fi

echo "$result"

内容的提问来源于stack exchange,提问作者Tuấn Nguyễn Anh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:53:33