Linuxが利用可能ケース多くの言語と同様に、次のようになります。
case ${x} in
one)
echo "1"
;;
two)
echo "2"
;;
esac
それらの一つとして同じことをすることができますか?$xまたは$yしかし、?それでは、これを想像してみてください。
case ( ${x} or ${y} ) in
one)
echo "1"
;;
two)
echo "2"
;;
esac
これは、次の場合を意味します。$xまたは$y含む一つまたは二つそれから1または2別途印刷してください。
答え1
いいえ、しかし、値と大文字と小文字を繰り返すことができます。
for v in "$x" "$y"; do
case "$v" in
one) echo "1"; break ;;
two) echo "2"; break ;;
esac
done
1
これにより、orが2
最初の一致$x
として印刷されます$y
。もちろん、2つが一致する場合はどうするかを決定するのはユーザーの役割です。
答え2
$x
可能な値とそれに何があるかを知っている場合は、$y
文字列を作成して"$x$y"
次のグローバルパターンを見つけることができます。
case $x$y in
*one*) echo "1" ;;
*two*) echo "2" ;;
esac
答え3
変数の値に文字が使用できない場合は、その文字を区切り文字として使用できます。たとえば、x値とy値の両方にコロンを含めることができないと判断したとします。
case ":${x}:${y}:" in
*:one:*)
echo "1"
;;
*:two:*)
echo "2"
;;
esac
これはさまざまな数の文字列に簡単に拡張できます。ただし、:
テスト中の文字列に現れる可能性のない文字(ここ)または一連の文字を見つける必要があることに注意してください。