Назад | Перейти на главную страницу

Как проверить сложные выражения с помощью bash?

Я могу использовать только простые выражения вроде 1=1 and 0=1

test 1 = 1 -a 0 = 1 

Но как делать сложные выражения вроде 1=1 and (0=1 or 1=1) ?

Ты можешь использовать test или [ ... ] пока вы будете осторожны, помните, что скобки должны быть экранированы, а термины должны быть разделены пробелами:

if [ \( a = a \) -a \( a = b -o b = b \) ]
then echo Yes
else echo No
fi

Для меня это отголосок «Да». Однако обычно проще использовать оболочку Bash и Korn. [[ ... ]] оператор вместо этого; вам не нужно так много убегать.

Либо используйте несколько тестовых вызовов:

test 1 = 1 && test 0 = 1 -o 1 = 1

или [[:

[[ 1 = 1 && (0 = 1 || 1 = 1) ]]

На вопрос уже дан ответ, но вы можете рассмотреть несколько советов по стилю (и, возможно, отклонить :-)):

Если это вы пишете и находите это непонятным, то, возможно:

  • Используйте extra (), даже если они не нужны, может прояснить ситуацию.
  • Также можно использовать вложенные циклы вместо множества операторов и.

Выше Флориан в основном прав, но имейте в виду, что bash также имеет арифметическое расширение, которое немного приятнее при сравнении переменных.

Видеть Вот для получения дополнительной информации.