Bash の if、elif、else ステートメントの問題 質問する

Bash の if、elif、else ステートメントの問題 質問する

およびifに関して、次のステートメントの何が問題なのかわかりません。 はまだ開発中であることに留意してください。ステートメントではまだテストできていないので、おそらく間違っているでしょう。elifthenprintf

発生したエラーは次のとおりです:

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

ベストアンサー1

elifとの間にスペースがありません[:

elif[ "$seconds" -gt 0 ]

すべきである

elif [ "$seconds" -gt 0 ]

全体として、従うべき構文は次のようになります。

if [ conditions ]; then
   # Things
elif [ other_conditions ]; then
   # Other things
else
   # In case none of the above occurs
fi

この質問は多くの閲覧数を得ているようですので、従うべき構文が次のとおりであることを示すことが重要です。

if [ conditions ]
# ^ ^          ^

つまり、括弧の周囲にスペースが必要です。そうしないと機能しません。これは、[それ自体がコマンドであるためです。

のような (または類似の) が表示されない理由は、と を確認した後、シェルが、、または を探しているelif[: command not foundためです。ただし、別の が見つかります(形式が誤っている の後)。ステートメントを解析した後にのみ、それが実行されます (そして のようなエラー メッセージが出力されます)。ifthenelifelsefithenelif[elif[: command not found

おすすめ記事