Bash脚本 – 如果,elif,else语句问题

我似乎无法弄清楚下面这个if语句与elif有关的问题。 请记住, printf还在开发中,我只是还没有在声明中对它进行testing,所以很可能是错误的。

我得到的错误是:

 ./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 

elif[ :之间缺less一个空格

 elif[ "$seconds" -gt 0 ] 

应该

 elif [ "$seconds" -gt 0 ] 

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

 if [ conditions ] # ^ ^ ^ 

这意味着在括号周围需要空格。否则,它将不起作用。 这是因为[本身就是一个命令。

你的脚本有一些语法问题。 这是一个固定的版本:

 #!/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 "Unkown parameter" fi 

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

 elif [