[a-z][0-9]
たとえば、1 つの文字と 1 つの数字の形式でできるだけ多くの変数を取得します。ダッシュでテストする方法はありますか?それは次のとおりです。
myvar=o7
if [ $myvar=o[0-4] ]; then
"do this"
elif [ $myvar=o[5-7] ]; then
"do that"
fi
よろしくお願いします:)
答え1
必要なものを達成するために正規表現は必要ありません。
case $myvar in
o[0-4])
echo 'do this'
;;
o[5-7])
echo 'do that'
;;
*)
echo 'unsupported case'
esac
あるいはもう少し簡単に言えば、
case $myvar in
o[0-4]) echo 'do this' ;;
o[5-7]) echo 'do that' ;;
*) echo 'unsupported case'
esac
ここでは$myvar
、与えられた各ケースラベルに対して値を順にマッチングし、最初に一致するラベルに対応するコードが実行される。;;
タグのコードを次のタグから分離します。つまり、最後のタグは必要 ;;
)が終わる前にesac
。
各タグは正規表現ではなく、ワイルドカードパターンまたはpattern)
形式になっています。(pattern)
このcase...esac
構造は、特定のタスクを実行する標準的で簡単な方法を提供し、次のように書くこともできます。
if [[ $myvar == o[0-4] ]]; then
echo 'do this'
elif [[ $myvar == o[5-7] ]]; then
echo 'do that'
else
echo 'unsupported case'
fi
そして同様の殻bash
。