quanto ho capito
= aspetta stringhe
eq aspetta interi
"$ bar" è per le partite letterali, cioè z * può espandersi, ma "z *" letteralmente corrispondere al carattere jolly.
La differenza tra [] e [[]] è che in quest'ultima parola la suddivisione e l'espansione del nome del percorso non vengono eseguite, ma si trovano nel primo.
Inoltre [[]] consente agli operatori aggiuntivi:
& & (E), || (OR), > (String1 lessicalmente maggiore di String2), < (String1 lessicale inferiore Stringa2)
L'operatore di confronto == si comporta diversamente entro un test doppio staffe che tra parentesi singoli.
[[$ a == z *]] # Vero se $ a inizia con una "z" (corrispondenza del modello).
[[$ a == "z *"]] # Vero se $ a è uguale a z * (corrispondenza letterale).
[$ a == z *] # Il file globbing e la suddivisione in parole hanno luogo.
["$ a" == "z *"] # Vero se $ a è uguale a z * (corrispondenza letterale).
Partenza http://tldp.org/LDP/abs/html/comparison-ops.html per ulteriori informazioni
possibile duplicato di [bash: parentesi doppia o singola, parentesi, parentesi graffe] (http://stackoverflow.com/questions/2188199/bash-double-or-single-bracket-parenthes-curly-braces) –
Leggi http://mywiki.wooledge.org/BashGuide http://mywiki.wooledge.org/BashFAQ http://mywiki.wooledge.org/BashPitfalls – Philipp