ユーザー入力から大文字と小文字を区別しない


1

ユーザーの入力を受け取るためのスクリプトを書きます。スクリプトは大文字と小文字を区別しないでください。

このスクリプトを考えてください foo.sh

if [ $1 == "string" ]; then
  echo true
else
  echo false
fi

の入力が foo.sh です STRING または StRiNg 結果は偽になります。

どのように私はのケースを無視することができます if 調子?


3
あなたが使うべきです [[ "$1" == "string" ]] の代わりに [ $1 == "string" ]。それ以外の場合は、トラブルに巻き込まれます $1 スペースが含まれているか空です。
mpy

回答:


3

あなたが使っていると仮定 bash 4.0+

${1,,}

さもないと、 tr または awk 動作するはずです:

var=$(echo "$1" | awk '{print tolower($0)}')
var=$(echo "$1" | tr '[:upper:]' '[:lower:]')

要約:

  • Awkは入力を取り込んで単に印刷する $0 (入力行全体)組み込みを使用した後 tolower() 関数。

  • Trは一目瞭然に見えますが、質問がある場合は私に知らせてください。


引用することをお勧め "$a"
glenn jackman

1

declare 小文字の機能を持ちます。

declare -l str=$1
[[ $str = "string" ]] && echo true || echo false

またあります nocasematch 使用できるシェルオプション
gniourf_gniourf
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.