Bashで構文はどのように機能しますか?これは、elseステートメントのCスタイルの擬似コードです。例えば:
If (condition)
then
echo "do this stuff"
elseif (condition)
echo "do this stuff"
elseif (condition)
echo "do this stuff"
if(condition)
then
echo "this is nested inside"
else
echo "this is nested inside"
else
echo "not nested"
あなたの質問は、多くの文法に含まれる曖昧な他の曖昧さに関するものだと思います。 bashにはそのようなことはありません。すべてのif
は、ifブロックの終わりを示すコンパニオンfi
で区切る必要があります。
(他の構文エラーに加えて)この事実を考えると、あなたの例は有効なbashスクリプトではないことに気付くでしょう。エラーの一部を修正しようとすると、次のようなメッセージが表示される場合があります
if condition
then
echo "do this stuff"
Elif condition
then
echo "do this stuff"
Elif condition
then
echo "do this stuff"
if condition
then
echo "this is nested inside"
# this else _without_ any ambiguity binds to the if directly above as there was
# no fi colosing the inner block
else
echo "this is nested inside"
# else
# echo "not nested"
# as given in your example is syntactically not correct !
# We have to close the last if block first as there's only one else allowed in any block.
fi
# now we can add your else ..
else
echo "not nested"
# ... which should be followed by another fi
fi