Bash正确(?)if语句没有正确执行

时间:2017-04-27 12:50:35

标签: bash if-statement

我正在寻找软件的shell脚本,但我一直收到以下错误:

>source thefile.sh
'else' builtin not inside of if block

我检查了理论错误的阻止,我发现结构没有问题

if [ condition ]
then 
if [ condition2 ]
then
dostuff
else
dostuffagain
fi
else # this is the else which generates the error
stuffstuffstuff
fi

我无法看到它有什么问题:它是嵌套的if / then而且每一个if都被它自己的fi终止。为什么shell会对它感到不安?

1 个答案:

答案 0 :(得分:1)

这不是bash错误消息;我在source code for the fish shell

中找到了它
 case parse_keyword_else: {
                this->parse_error(token, parse_error_unbalancing_else,
                                  L"'else' builtin not inside of if block");

这告诉我你在source shell中尝试bash一个fish脚本,这是行不通的。 source告诉shell(在这种情况下为fish)执行脚本本身,但fish shell的语法与bash语法中的bash语法有太大不同它的脚本是有意义的。

(我想你可以尝试写一个polyglot scriptfish$CFG->dbhost = '<name-of-the-server>'工作,但这很难。)