not - bash[[[a]==[a]]] no es cierto? corchete afecta el resultado de la comparación
linux bash if string not equal (2)
El lado derecho no citado de == y != Se trata como un patrón, no como una cadena literal. mnt:[4026532411] coincidirá con mnt: seguido de exactamente uno de 0, 1, 2, 3, 4, 5 o 6, ya que los patrones mnt:[4026532411] y mnt:[0123456] son equivalentes. Para que coincida con la cadena de caracteres, debe citar la expansión.
x=''mnt:[4026532411]''
[[ $x == "$x" ]] && echo OK
Alguien sabe por qué pasa esto? ¿Es este un error de bash?
x=''mnt:[4026532411]''
[[ $x == $x ]] && echo OK
Estoy esperando el resultado OK , pero no lo hizo.
Claro que esto funciona
[[ "$x" == "$x" ]] && echo OK
Pero como sé, bash [[]] tiene un mérito que no necesita citar var cuando se compara.
x=''a b''
[[ $x == $x ]] && echo OK
trabajos.
Cosas irónicas es
x=''mnt:[4026532411]''
[[ $x != $x ]] && echo Oh my god
el resultado es Oh mi dios
Lo que estás viendo es hacer esta oración desde la página de manual de bash :
Cuando se utilizan los operadores == y! =, La cadena a la derecha del operador se considera un patrón y se empareja de acuerdo con las reglas que se describen a continuación en Coincidencia de patrones, como si la opción de shell extglob estuviera habilitada.
Como ya sabrá, en el [...] shell se pueden realizar coincidencias de un grupo de caracteres. Es decir, dados los archivos:
$ ls
fileA fileB fileC fileD
Ejecutar el ls file[AB] producirá:
fileA fileB
Entonces en su expresión, mnt:[1234] se interpreta de manera similar.