このコマンドの構文は次のfor
とおりです。
for name [ [in [words ...] ] ; ] do commands; done
このコマンドの構文は次のcase
とおりです。
case word in [ [(] pattern [| pattern]...) command-list ;;]... esac
このselect
設定は POSIX の Bash 拡張です。メニューを簡単に作成できます。構文は for コマンドとほぼ同じです。
select name [in words ...]; do commands; done
このコマンドの構文は次の{...}
とおりです。
{ list; }
質問:
他のコマンドで使用された区切り文字の代わりにコマンドの句が区切られ
case
たのはなぜですか?;;
;
for
andコマンドでその部分を無視case
するとin
、なぜ次の;
合計;;
も残らず無視されますか?一方、
select
命令では;
その部分が無視されても無視されませんin
。case
in
コマンドの次の部分は無視されませんが、コマンドfor
内では無視されます。任意に一貫性のないPOSIXシェルデザインですか?;
複合コマンドにはどのタイプのタグが使用されますか?;;
コマンドリスト(複合コマンドとは反対)には
;
制御演算子があります。複合コマンド間に1つの理由が必要なのはなぜですか
{ list; }
?条項とみなされれば条項でもありますか?複合コマンドの句は改行で区切る必要がありますか?追加読書;
list
}
}
{ list
;
私の前の質問とHomerの質問に答えてください。「単語を区別するためにスペースの代わりにセミコロンが必要なのはなぜですか?」と尋ねました。 「セミコロンとスペースは両方ともシェルメタ文字」だからです。
メモ:
while
、およびコマンドの構文もリストしたいのですが、until
使い方の面ではif
コマンドと同様に動作すると思います。for
;
ベストアンサー1
;;
;
inステートメント操作の一部に答えるには、特定のブランチがcase
終了した場合、Caseステートメントの単一ブランチで複数のコマンドを実行する単一行コマンドを作成できないことを検討してください。;
複数行コマンドを使用してこれを実行できますが、このようにシェル構文を設計すると、必要複数行、複数行(改行)を回避できないシェル構文の他の場所はありません。;;
シェルデザインでケーススイッチを使用すると、コードを書くときに大きな柔軟性が得られます。
case
for
、およびと比較して、while
これらのコマンドはすべて、各ユースケースで特定の予約語に従います。 (、、、、、、、、、)until
if
list
then
elif
else
fi
do
done
case
一方、次のような「パターン」のリストが表示されます。何もない--必要なパターンは有効なコマンドの名前でもかまいません。