変数で文字列の大文字と小文字(大文字と小文字)を変更するには?

変数で文字列の大文字と小文字(大文字と小文字)を変更するには?
"Enter test: "
read test

if [[ $test == "a" ]]; then
    echo "worked"
else
    echo "failed"
fi

これは私がやっているテストの簡単な説明ですが、「A」と入力すると失敗します。一致するかどうかをテストできるように、変数ステップですべての項目を小文字に変更することができますか?

ベストアンサー1

sh標準(POSIXおよびBourne)構文を使用してください。

case $answer in
  a|A) echo OK;;
  *)   echo >&2 KO;;
esac

または:

case $answer in
  [aA]) echo OK;;
  *)    echo >&2 KO;;
esac

bashkshまたは(zshこの非標準構文をサポートする[[...]]3つのシェル)を使用して、以下を宣言できます。小文字変える:

typeset -l test
printf 'Enter test: '
read test
if [ "$test" = a ]; then...

bash一部のロケールでは、変換が偽であることに注意してください。)

おすすめ記事