タグ付けされた質問 「case」

4
bash caseステートメントの最後の「esac」とはどういう意味ですか?必要ですか?
bashのcaseステートメントの最後に「esac」の例が複数あるのを見つけましたが、その使用に関する明確なドキュメントは見つかりませんでした。マニュアルページはそれを使用しており、単語(https://www.gnu.org/software/bash/manual/bashref.html#index-esac)のインデックスさえ持っていますが、その使用を定義していません。ケースステートメント、ベストプラクティス、または純粋なテクニックを終了するために必要な方法ですか?
55 bash  case 

4
ケース条件として変数を使用するにはどうすればよいですか?
ステートメントテスト|としてaで区切られた異なる文字列で構成される変数を使用しようとしていますcase。例えば: string="\"foo\"|\"bar\"" read choice case $choice in $string) echo "You chose $choice";; *) echo "Bad choice!";; esac ステートメントの最初の部分を入力fooまたはbar実行できるようにしcaseます。しかし、両方fooとbar第二に私を取ります: $ foo.sh foo Bad choice! $ foo.sh bar Bad choice! "$string"代わりに使用し$stringても違いはありません。どちらも使用しませんstring="foo|bar"。 私はこの方法でできることを知っています: case $choice in "foo"|"bar") echo "You chose $choice";; *) echo "Bad choice!";; esac さまざまな回避策を考えることができますがcase、bashの条件として変数を使用できるかどうかを知りたいです。それは可能ですか?

8
if条件に基づくケースのフォールスルー
私はbashのケース条件内のif条件に基づいてフォールスルーが発生する方法を探しています。例えば: input="foo" VAR="1" case $input in foo) if [ $VAR = "1" ]; then # perform fallthrough else # do not perform fallthrough fi ;; *) echo "fallthrough worked!" ;; esac 上記のコードで、変数VARが1の場合、ケース条件にフォールスルーを実行させたいと思います。

2
ケースステートメント外の変数の割り当て
多くの言語では、caseステートメント内で変数の割り当てを何度も繰り返すのではなく、case / switchステートメントの結果を変数に割り当てることができます。Bashシェルでこのようなことを行うことは可能ですか? color_code=$(case "$COLOR" in (red) 1;; (yellow) 2;; (green) 3;; (blue) 4;; esac) (または、余談ですが、他のシェルでは?)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.