Stu*_*ing 328 bash if-statement
我似乎无法弄清楚以下if
陈述的问题是关于elif
和then
.请记住,printf
仍然在开发中我还没有能够在声明中测试它,所以很可能是错误的.
我得到的错误是:
./timezone_string.sh: line 14: syntax error near unexpected token `then'
./timezone_string.sh: line 14: `then'
Run Code Online (Sandbox Code Playgroud)
声明就是这样.
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
Run Code Online (Sandbox Code Playgroud)
fed*_*qui 420
elif
和之间缺少空格[
:
elif[ "$seconds" -gt 0 ]
Run Code Online (Sandbox Code Playgroud)
应该
elif [ "$seconds" -gt 0 ]
Run Code Online (Sandbox Code Playgroud)
正如我看到这个问题获得了很多观点,重要的是要指出要遵循的语法是:
if [ conditions ]
# ^ ^ ^
Run Code Online (Sandbox Code Playgroud)
意味着括号周围需要空格.否则,它将无法正常工作.这是因为[
它本身就是一个命令.
anu*_*ava 278
您的脚本存在一些语法问题.这是一个固定版本:
#!/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
Run Code Online (Sandbox Code Playgroud)
cho*_*oba 23
[
是一个命令.它必须用前面语句中的空格分隔:
elif [
Run Code Online (Sandbox Code Playgroud)
小智 6
程序之间缺少空格elif
和[
休息是正确的。你需要更正它并检查它。这是固定程序:
#!/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
Run Code Online (Sandbox Code Playgroud)
与此bash if else 语句相关的有用链接
小智 5
我建议您看看bash中的调理基础知识。
符号“ [”是命令,并且必须在其前面有一个空格。如果您在Elif之后不留空格,则系统会将Elif [解释为一个特定命令,这绝对不是您现在想要的命令。
用法:
elif(A COMPULSORY WHITESPACE WITHOUT PARENTHESIS)[(A WHITE SPACE WITHOUT PARENTHESIS)conditions(A WHITESPACE WITHOUT PARENTHESIS)]
Run Code Online (Sandbox Code Playgroud)
简而言之,将代码段编辑为:
elif [ "$seconds" -gt 0 ]
Run Code Online (Sandbox Code Playgroud)
没有任何编译错误,您会很好。您的最终代码段应如下所示:
#!/bin/sh
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
Run Code Online (Sandbox Code Playgroud)