Я могу использовать только простые выражения вроде 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) ]]
На вопрос уже дан ответ, но вы можете рассмотреть несколько советов по стилю (и, возможно, отклонить :-)):
Если это вы пишете и находите это непонятным, то, возможно:
Выше Флориан в основном прав, но имейте в виду, что bash также имеет арифметическое расширение, которое немного приятнее при сравнении переменных.
Видеть Вот для получения дополнительной информации.