意外标记‘fi’附近有语法错误

意外标记‘fi’附近有语法错误

我创建了一个非常简单的脚本(见下文),但无法正常运行。我总是收到消息说

line 5: syntax error near unexpected token 'fi'
line 5: 'fi'

当我尝试执行该脚本时。

#!/bin/sh
rm /opt/file_name
if $? -ne 0 then
    echo 'error'
fi
exit

我正在 Red Hat Linux 上运行它,看看是否有任何区别。

如果有人能帮助找出 if 语句的问题所在,我将不胜感激。

账单

答案1

您缺少一个分号(并且我不确定没有方括号是否能起作用)。

备择方案:

如果 [[ $? -ne 0 ]];则

或者

如果 ! 测试 $? = 0; 那么

或者

如果 [ $? -ne 0 ];则

或者

测试 $? = 0 || echo ‘错误’;

甚至更好:

rm /bla/bla ||回显‘错误’;

(最后一个是你的整个脚本)

答案2

这是一个非常方便的替代方案。“test”命令本身就是一个类似于“rm”的命令。它会向“if”发送返回代码:如果成功则为 0,如果失败则为 1 或更大。因此,您无需检查特殊 $? 变量中的返回代码,只需执行以下操作:

if rm foo; then
    echo "It worked"
else
    echo "It failed"
fi

您还可以通过执行以下操作来否定 if:

if ! rm foo; then
     echo "It failed"
fi

答案3

您需要在 if 语句末尾添加分号以及括号:

#!/bin/sh

rm /opt/file_name

if [ $? -ne 0 ]; then

     echo 'error'

fi

exit

答案4

#!/bin/sh

rm somefile

if [ $? -ne 0 ]
then
     echo 'error'
fi

exit

相关内容