Найти подстроку в переменной сценария оболочки - PullRequest
21 голосов
/ 26 июля 2011

У меня есть строка

$VAR="I-UAT"; 

в моем коде сценария оболочки.Мне нужен условный оператор, чтобы проверить, присутствует ли "UAT" в этой строке.

Какую команду я должен использовать для получения логического значения true или false в качестве вывода?Или есть другой способ проверить это?

Ответы [ 6 ]

21 голосов
/ 26 июля 2011

Какая оболочка? Использование bash:

if [[ "$VAR" =~ "UAT" ]]; then
    echo "matched"
else
    echo "didn't match"
fi
8 голосов
/ 26 июля 2011

Вы можете сделать это следующим образом:

case "$VAR" in
  *UAT*)
   # code when var has UAT
  ;;
esac
5 голосов
/ 26 июля 2011

Классическим способом, если вы заранее знаете, какую строку вы ищете, является оператор case:

case "$VAR" in
*UAT*) : OK;;
*)     : Oops;;
esac

Вы можете использовать соответствующую команду вместо :команда.Это будет работать и с оболочками Борна и Корна, а не только с Bash.

1 голос
/ 26 июля 2011
found=`echo $VAR | grep -c UAT`

Затем проверьте, что $ найдено ненулевым.

1 голос
/ 26 июля 2011

попробуй с grep:

$ echo I\-UAT | grep UAT
$ echo $?
0
$ echo I\-UAT | grep UAX
$ echo $?
1

так что тестирование

if [ $? -ne 0 ]; then
  # not found
else
  # found
fi
1 голос
/ 26 июля 2011

В bash скрипте вы можете использовать

if [ "$VAR" != "${VAR/UAT/}" ]; then
  # UAT present in $VAR
fi
...