【发布时间】:2017-07-30 02:12:37
【问题描述】:
我正在为备份设置一些 shell 脚本。一切正常,但是当我使用 if then 语句时出现语法错误。
查看https://www.tutorialspoint.com/unix/if-else-statement.htm,他们使用了一个简单的 if 语句,该语句适用于网站,因为它有一个 try it pop 部分。当我将内容复制到另存为 .sh 的文件中并在我的 ubuntu 服务器(16.04.2 x64)上尝试时,出现语法错误:“fi”意外(期望“then”)
来自网站的代码如下
#!/bin/sh
a=10
b=20
if [ $a == $b ]
then
echo "a is equal to b"
else
echo "a is not equal to b"
fi
要在我使用的终端上运行
sh /path/to/file/script.sh
有几个问题被问到并得到了回答,但似乎没有一个与我的情况相同。有什么我需要在服务器上更新的吗?如果我使用 bash 而不是 sh 它会说意外令牌。有人遇到过这个问题吗?
如果它可能有帮助,当我在终端中运行时,它似乎不喜欢空格,下面是完整的错误
sh /var/www/check-day.sh
: not foundeck-day.sh: 4: /var/www/check-day.sh:
/var/www/check-day.sh: 10: /var/www/check-day.sh: Syntax error: "fi"
unexpected (expecting "then")
【问题讨论】:
-
为我工作.... 刚刚运行您的代码。确保您正确复制和粘贴 - 不要错过
then。 -
@PressingOnAlways 让我更新一下问题,另一个问题是它不喜欢空格,如果这意味着什么。
-
使用
=而不是==更便于移植,具体取决于您使用的sh实现,但如果这是问题所在,您会收到不同的错误消息。您的文件是否可能具有 Windows 样式的 CR-LF 行尾?
标签: linux bash shell if-statement