Parece que estos dos operadores son prácticamente iguales, ¿hay alguna diferencia? ¿Cuándo debo usar =
y cuándo ==
?¿Cuál es la diferencia entre el operador "=" y "==" en Bash?
Respuesta
Debe utilizar ==
en las comparaciones numéricas en ((...))
:
$ if ((3 == 3)); then echo "yes"; fi
yes
$ if ((3 = 3)); then echo "yes"; fi
bash: ((: 3 = 3 : attempted assignment to non-variable (error token is "= 3 ")
, puede usar cualquiera de las comparaciones de cadenas en [[ ... ]]
o [ ... ]
o test
:
$ if [[ 3 == 3 ]]; then echo "yes"; fi
yes
$ if [[ 3 = 3 ]]; then echo "yes"; fi
yes
$ if [ 3 == 3 ]; then echo "yes"; fi
yes
$ if [ 3 = 3 ]; then echo "yes"; fi
yes
$ if test 3 == 3; then echo "yes"; fi
yes
$ if test 3 = 3; then echo "yes"; fi
yes
"las comparaciones de cadenas?", ¿tu dices?
$ if [[ 10 < 2 ]]; then echo "yes"; fi # string comparison
yes
$ if ((10 < 2)); then echo "yes"; else echo "no"; fi # numeric comparison
no
$ if [[ 10 -lt 2 ]]; then echo "yes"; else echo "no"; fi # numeric comparison
no
Hay una diferencia sutil con respecto a POSIX. Extracto de la Bash reference:
string1 == string2
Verdadero si las cadenas son iguales.=
se puede usar en lugar de==
para cumplir estrictamente con POSIX.
No hay diferencia en bash sin embargo? ¿Solo un problema de portabilidad? –
@ T.E.D .: No, mira mi respuesta. –
- 1. ¿Cuál es la diferencia entre VBScript's y el operador &?
- 2. ¿Cuál es la diferencia entre el nuevo operador y Class.newInstance()?
- 3. ¿Cuál es la diferencia entre ">" y "&>" en bash?
- 4. ¿Cuál es la diferencia entre '->' (operador de flecha) y '.' (operador de punto) en Objective-C?
- 5. ¿Diferencia entre 'nuevo operador' y 'operador nuevo'?
- 6. En Actionscript 3, ¿cuál es la diferencia entre el operador "in" y el método "hasOwnProperty"?
- 7. ¿Cuál es la diferencia entre los backticks y $() en el script bash?
- 8. cuál es la diferencia entre operador de punto y operador de resolución de alcance
- 9. ¿Cuál es la diferencia entre las cláusulas where y el operador && en LINQ-to-SQL?
- 10. ¿cuál es la diferencia entre:.! y: r !?
- 11. Cuál es la diferencia entre $ y jQuery
- 12. ¿Cuál es la diferencia entre dict() y {}?
- 13. Cuál es la diferencia entre $ (...) y `...`
- 14. ¿Cuál es la diferencia entre .ToString (+) y ""
- 15. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 16. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 17. ¿Cuál es la diferencia entre + = y = +?
- 18. ¿Cuál es la diferencia entre ".equals" y "=="?
- 19. Cuál es la diferencia entre = y: =
- 20. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 21. ¿Cuál es la diferencia entre " " y ""?
- 22. ¿Cuál es la diferencia entre {0} y ""?
- 23. ¿Cuál es la diferencia entre == y = en Prolog?
- 24. ¿Cuál es la diferencia entre: = y + = en el archivo make?
- 25. ¿Cuál es la diferencia entre is_a y instanceof?
- 26. Diferencia entre bash pid y $$
- 27. ¿Cuál es la diferencia entre el mango y el hilo?
- 28. Backbone.Js - ¿Cuál es la diferencia entre el y $ el?
- 29. ¿Cuál es la diferencia entre el NSImage y el UIImage?
- 30. ¿Cuál es la diferencia entre $ VARIABLE y $ {VARIABLE}
No deberías usar '==' con '[' o 'test', sin embargo. '==' no es parte de la especificación POSIX, y no funcionará con todas las shells ('dash', en particular, no lo reconoce). – chepner
@chepner: Eso es cierto, pero la pregunta es específicamente sobre Bash. –