如果,elif,其他声明在Bash中发布

时间:2013-04-16 10:30:38

标签: bash if-statement

我似乎无法弄清楚以下if语句的问题与elifthen有关。请记住,printf仍处于开发阶段我还没有在声明中测试它,所以很可能是错误的。

我得到的错误是:

./timezone_string.sh: line 14: syntax error near unexpected token `then'
./timezone_string.sh: line 14: `then'

声明就是这样。

if [ "$seconds" -eq 0 ];then
   $timezone_string="Z"
elif[ "$seconds" -gt 0 ]
then
   $timezone_string=`printf "%02d:%02d" $seconds/3600 ($seconds/60)%60`
else
   echo "Unknown parameter"
fi

4 个答案:

答案 0 :(得分:362)

elif[之间缺少空格:

elif[ "$seconds" -gt 0 ]

应该是

elif [ "$seconds" -gt 0 ]

正如我看到这个问题获得了很多观点,重要的是要指出要遵循的语法是:

if [ conditions ]
# ^ ^          ^

意味着括号周围需要空格。否则,它将无法正常工作。这是因为[本身命令。

答案 1 :(得分:224)

您的脚本存在一些语法问题。这是一个固定版本:

#!/bin/bash

if [ "$seconds" -eq 0 ]; then
   timezone_string="Z"
elif [ "$seconds" -gt 0 ]; then
   timezone_string=$(printf "%02d:%02d" $((seconds/3600)) $(((seconds / 60) % 60)))
else
   echo "Unknown parameter"
fi

答案 2 :(得分:21)

[是一个命令。它必须用前面语句中的空格分隔:

elif [

答案 3 :(得分:3)

我建议您看看bash中的调理基础。

符号“ [” 是命令,并且必须在其前面有空格。如果您在Elif之后不给空格,则系统会将 elif [”解释为一个特定的命令,这绝对不是您当前想要的。

用法:

kit.insertHTML(doc,doc.getLength(), "<img src=\"data:image/jpeg;base64," + base64Code + "\"/>", 0, 0, HTML.Tag.IMG);

简而言之,将代码段编辑为:

elif(A COMPULSORY WHITESPACE WITHOUT PARENTHESIS)[(A WHITE SPACE WITHOUT PARENTHESIS)conditions(A WHITESPACE WITHOUT PARENTHESIS)]

您会没事的,没有编译错误。您的最终代码段应如下所示:

elif [ "$seconds" -gt 0 ]