我正在寻找软件的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会对它感到不安?
答案 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 script来fish
和$CFG->dbhost = '<name-of-the-server>'
工作,但这很难。)