1

Я пытаюсь написать скрипт, чтобы поймать пользовательский ввод. Скрипт должен игнорировать регистр.

Рассмотрим этот скрипт foo.sh:

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

Если вход foo.sh равен STRING или StRiNg результат будет ложным.

Как я могу игнорировать регистр в if ?

2 ответа2

3

Предполагая, что вы используете bash 4.0+:

${1,,}

В противном случае tr или awk должны работать:

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

Резюме:

  • Awk принимает входные данные и просто печатает $0 (всю строку ввода) после использования встроенной функции tolower() .

  • Тр выглядит довольно понятным, но дайте мне знать, если у вас есть вопросы по этому поводу.

1

declare в нижнем регистре:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .