シェルプロンプトで「はい」バリアントを可能にするより良い方法

シェルプロンプトで「はい」バリアントを可能にするより良い方法

私が書いたシェルスクリプトの使いやすさテストでは、人々が「はい」という答えを期待する質問に答える方法についてさまざまな期待を持っていることがわかりました。以下のコード例のバリエーションをご覧ください。

確かに私が思いついたよりも良い方法がありますか?あなたの…読めるそしてより短い形式これを受け入れますか?

read -p 'Answer this question with yes: ' answer
if [ "$answer" = 'Y'
  -o "$answer" = 'YES'
  -o "$answer" = 'Yes'
  -o "$answer" = 'y'
  -o "$answer" = 'yes'
  -o some-alternate-condition ]; then

  echo 'Surely this can be written better?'
fi

ベストアンサー1

UNIX 標準では、次のコードを使用してサンプルコードを提供します。locale便利:

if printf "%s\n" "$response" | grep -Eq "$(locale yesexpr)"
then
    affirmative processing goes here
else
    non-affirmative processing goes here
fi

POSIXロケール(および実際のシステムの英語ロケール)では、「yesexpr」の値はです"^[yY]"。拡張正規表現として解釈されます。 noexprも参照してください。

おすすめ記事