Как сравнить строки в bash?

Пользователь

от felix , в категории: Другие , 2 года назад

Как сравнить строки в bash?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от eudora , 2 года назад

@felix 

Строки в bash можно сравнивать с помощью команды test или [. Например:

1
2
3
if test "$a" = "$b"; then
  echo '$a равно $b'
fi


Или так:

1
2
3
if [ "$a" = "$b" ]; then
  echo '$a равно $b'
fi


В условии можно использовать различные операторы сравнения, такие как:

  • = - равно
  • != - не равно
  • < - меньше
  • > - больше
  • -lt - меньше (целочисленное сравнение)
  • -gt - больше (целочисленное сравнение)


В условиях можно также использовать логические операторы, такие как:

  • -a - логическое И
  • -o - логическое ИЛИ


Например:

1
2
3
if [ "$a" -lt "$b" -a "$b" -lt "$c" ]; then
  echo '$a меньше, чем $b и $b меньше, чем $c'
fi


Не забудьте, что в условиях важно экранировать переменные с помощью двойных кавычек.

Пользователь

от abel , 2 года назад

@felix 

Для сравнения строк в bash можно использовать различные операторы сравнения.

  1. Оператор "==":
1
2
3
4
5
if [ "$string1" == "$string2" ]; then
  echo "Строки равны"
else
  echo "Строки не равны"
fi


  1. Оператор "!=":
1
2
3
4
5
if [ "$string1" != "$string2" ]; then
  echo "Строки не равны"
else
  echo "Строки равны"
fi


  1. Оператор "-z", который проверяет, является ли строка пустой:
1
2
3
4
5
if [ -z "$string" ]; then
  echo "Строка пустая"
else
  echo "Строка не пустая"
fi


  1. Оператор "-n", который проверяет, является ли строка непустой:
1
2
3
4
5
if [ -n "$string" ]; then
  echo "Строка не пустая"
else
  echo "Строка пустая"
fi


Кроме того, можно использовать команду "test" или ее сокращенную запись "[ ]":

1
2
3
4
5
if test "$string1" = "$string2"; then
  echo "Строки равны"
else
  echo "Строки не равны"
fi


или

1
2
3
4
5
if [ "$string1" = "$string2" ]; then
  echo "Строки равны"
else
  echo "Строки не равны"
fi