103
En bash
, ¿cuál es la diferencia, si existe, entre los operadores de prueba igual e igual de doble?igualdad de cadena de bash
[[ "a" = "a" ]] && echo equal || echo not-equal
[[ "a" == "a" ]] && echo equal || echo not-equal
[[ "a" = "b" ]] && echo equal || echo not-equal
[[ "a" == "b" ]] && echo equal || echo not-equal
resultados en:
equal
equal
not-equal
not-equal
No hay diferencia para las comparaciones * string *, pero no puede usar '=' para las comparaciones numéricas en '(())' (debe usar '==' en '(())' o '-eq 'in' [] ',' test' o '[[]]'. Ver mi respuesta [aquí] (http://stackoverflow.com/questions/2600281/what-is-the-difference-between-operator-and -in-bash/2601583 # 2601583). –
También vale la pena señalar que == se introdujo en bash, pero bourne shell no lo admite. En algunos sistemas, notará que/bin/sh es en realidad bash, y en otros sistemas, es bourne. Me encontré con ese problema cuando un script de shell funcionó correctamente en varios sistemas, pero falló en uno. El == no admitido en bourne fue la razón por la que falló en el uno. – Joe
Nota, en ksh si lo marca la sintaxis, obtienes una advertencia de depreciación con la sintaxis single =. warning: línea 3: '=' obsoleto, usa '==' ' – brianegge