Según entiendo
= espera cuerdas
eq espera enteros
"$" es la barra de partidos literal, es decir, z * puede expandirse, pero "z *", literalmente, que coincida con el comodín char
La diferencia entre [] y [[]] es que en la última división de palabra y la expansión del nombre de ruta no están hechas, pero están en la primera.
Plus [[]] permite a los operadores adicionales:
& & (AND), || (OR), > (Cadena1 léxicamente mayor que String2), < (Cadena1 léxicamente menos de String2)
El operador de comparación == comporta de manera diferente dentro de una prueba de doble soportes que dentro de los soportes individuales.
[[$ a == z *]] # Verdadero si $ a comienza con una "z" (coincidencia de patrones).
[[$ a == "z *"]] # Verdadero si $ a es igual a z * (concordancia literal).
[$ a == z *] # La fragmentación de archivos y división de palabras tiene lugar.
["$ a" == "z *"] # Verdadero si $ a es igual a z * (concordancia literal).
Salida http://tldp.org/LDP/abs/html/comparison-ops.html para obtener más información
posible duplicado de [bash: soporte doble o simple, paréntesis, llaves]] (http://stackoverflow.com/questions/2188199/bash-double-or-single-bracket-parentheses-curly-braces) –
Leer http://mywiki.wooledge.org/BashGuide http://mywiki.wooledge.org/BashFAQ http://mywiki.wooledge.org/BashPitfalls – Philipp