我创build了一个非常简单的脚本(见下文),但无法正常运行。 我总是收到消息说
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语句有什么问题,我会非常感激。
法案
你错过了一个分号(我不确定它是否工作没有方括号)。
备择scheme:
如果[[$? -ne 0]];然后
要么
如果! testing$? = 0; 然后
要么
如果[$? -ne 0];然后
要么
testing$? = 0 || 回声'错误';
甚至更好:
rm / bla / bla || 回声'错误';
(最后一个是你的整个脚本)
这是一个非常方便的select。 “testing”命令本身就是一个类似“rm”的命令。 它将返回代码发送到“if”:如果成功则返回0,如果失败则返回1或更大。 因此,而不是检查特殊的$返回代码? variables,你可以这样做:
if rm foo; then echo "It worked" else echo "It failed" fi
你也可以通过这样做否定:
if ! rm foo; then echo "It failed" fi
在if语句末尾需要分号以及括号:
#!/bin/sh rm /opt/file_name if [ $? -ne 0 ]; then echo 'error' fi exit
你需要一个分号或if和then之间的换行符,即
if $? -ne 0; then ... fi
要么
if $? -ne 0 then ... fi
#!/bin/sh rm somefile if [ $? -ne 0 ] then echo 'error' fi exit