次のif
ステートメントの問題がElif
とthen
に関してどうなっているのか理解できないようです。 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
Elif
と[
の間にスペースがありません。
Elif[ "$seconds" -gt 0 ]
あるべき
Elif [ "$seconds" -gt 0 ]
この質問から多くの意見が得られていることがわかりますが、従うべき構文は次のとおりです。
if [ conditions ]
# ^ ^ ^
大括弧の周りに/ - スペースが必要であることを意味します 。さもなければ、それは働かないでしょう。これは[
そのもの が aコマンドだからです。
スクリプトにはいくつかの構文上の問題があります。これが修正版です。
#!/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
[
はコマンドです。前のステートメントから空白で区切る必要があります。
Elif [
Bashでのコンディショニングの基本を見てみることをお勧めします。
記号 "[" はコマンドであり、その前には空白が必要です。 Elifの後に空白を入れないと、システムは Elif [ を特定のコマンドとして解釈しますが、これは現時点では絶対に望まないことです。
使用法:
Elif(A COMPULSORY WHITESPACE WITHOUT PARENTHESIS)[(A WHITE SPACE WITHOUT PARENTHESIS)conditions(A WHITESPACE WITHOUT PARENTHESIS)]
つまり、コードセグメントを次のように編集します。
Elif [ "$seconds" -gt 0 ]
コンパイルエラーがなくても問題ありません。最終的なコードセグメントは次のようになります。
#!/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