在bash脚本中出现奇怪的'语法错误:文件的意外结束'

时间:2012-12-11 17:36:38

标签: bash

我无法弄清楚以下脚本有什么问题。

#!/bin/bash 
if [ "$1" = "x" ] 
then
  echo Pushing web on sharada to origin.
else if [ "$1" = "y" ] 
then 
  echo Pulling web on sharada from origin.
else 
  echo "Usage : arg x to push or y to pull."
fi

我在xterm的Linux(Ubuntu)上。

4 个答案:

答案 0 :(得分:3)

你错过了最后关闭“fi”。 else if构造确实不是elif延续,而是新if生活在前一个else的{​​{1}}子句中。

所以,格式正确你应该:

if

答案 1 :(得分:2)

应该是elif,而不是else if,如下所示:

if [ "$1" = "x" ] 
then
  echo Pushing web on sharada to origin.
elif [ "$1" = "y" ] 
then 
  echo Pulling web on sharada from origin.
else 
  echo "Usage : arg x to push or y to pull."
fi

答案 2 :(得分:1)

您有两个if,因此您需要两个fi

答案 3 :(得分:0)

已询问的问题已经解决。我只想在这里分享我的经验,因为我得到的错误消息是相同的,即使原因和解决方案稍有不同。

#!/bin/bash

echo "a"

if [ -f x.txt ]; then \
    echo "b" \
fi;

echo "c"

此脚本产生了相同的错误消息,解决方法是将缺少的分号添加到echo "b"行的末尾:

#!/bin/bash

echo "a"

if [ -f x.txt ]; then \
    echo "b" ; \
fi;

echo "c"

直接原因与原始问题相同。 if没有其结束对fi。但是,原因是fi行由于缺少;分号而混入了前一行。