1. ホーム
  2. バッシュ

[解決済み】Bashのif, elif, else文の問題点

2022-04-29 10:52:17

質問

次のような問題があるようですが、解決できません。 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

解決方法は?

の間にスペースがありません。 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 (など)を見てから ifthen のどちらかを探しています。 elif , else または fi . しかし、別の then (フォーマットミスのある elif[ ). のみ のようなエラーメッセージが表示されます)。 elif[: command not found が出力されます)。