
Sólo puedo hacer expresiones simples como1=1 and 0=1
test 1 = 1 -a 0 = 1
Pero, ¿cómo hacer expresiones complejas como 1=1 and (0=1 or 1=1)
?
Respuesta1
Utilice varias llamadas de prueba:
test 1 = 1 && test 0 = 1 -o 1 = 1
o [[:
[[ 1 = 1 && (0 = 1 || 1 = 1) ]]
Respuesta2
Puedes usar test
o [
... ]
siempre y cuando tengas cuidado, recordando que los paréntesis deben tener escape y los términos deben estar separados por espacios:
if [ \( a = a \) -a \( a = b -o b = b \) ]
then echo Yes
else echo No
fi
Eso me hace eco de un 'Sí'. Sin embargo, suele ser más fácil utilizar el operador de shell Bash y Korn [[
... ]]
en su lugar; no tienes que hacer tanto para escapar.
Respuesta3
La pregunta ya está respondida, pero un par de consejos de estilo que podrías considerar (y tal vez rechazar :-)):
Si eres tú quien lo escribe y te resulta confuso, entonces tal vez:
- Utilice extra () incluso si no son necesarios, podría aclararlo.
- También es posible utilizar bucles anidados en lugar de muchas declaraciones y.
Respuesta4
Florian tiene razón en su mayor parte, pero tenga en cuenta que bash también tiene expansión aritmética, lo cual es un poco mejor cuando se comparan variables.
Veraquípara más información.