Dalla documentazione di bash :
(list)l'elenco viene eseguito in un ambiente subshell (vedere AMBIENTE DI ESECUZIONE DEI COMANDI di seguito). Le assegnazioni di variabili e i comandi integrati che influiscono sull'ambiente della shell non rimangono attivi dopo il completamento del comando. Lo stato di ritorno è lo stato di uscita dell'elenco.
In altre parole, ti assicuri che qualunque cosa accada in 'list' (come a cd) non abbia alcun effetto al di fuori di (e ). L'unica cosa che fuoriuscirà è il codice di uscita dell'ultimo comando o con set -eil primo comando che genera un errore (diverso da alcuni come if, whileetc.)
((expression))L'espressione viene valutata in base alle regole descritte di seguito in VALUTAZIONE ARITMETICA. Se il valore dell'espressione è diverso da zero, lo stato di ritorno è 0; altrimenti lo stato di ritorno è 1. Questo è esattamente equivalente a lasciare "espressione".
Questa è un'estensione bash che ti permette di fare matematica. Questo è in qualche modo simile all'utilizzo exprsenza tutti i limiti di expr(come avere spazi ovunque, scappare *, ecc.)
[[ expression ]]Restituisce uno stato di 0 o 1 a seconda della valutazione dell'espressione condizionale. Le espressioni sono composte dalle primarie descritte di seguito in ESPRESSIONI CONDIZIONATE. La suddivisione delle parole e l'espansione del percorso non vengono eseguite sulle parole tra [[e]]; vengono eseguite l'espansione della tilde, l'espansione dei parametri e delle variabili, l'espansione aritmetica, la sostituzione dei comandi, la sostituzione del processo e la rimozione delle quote. Gli operatori condizionali come -f devono essere non quotati per essere riconosciuti come primari.
Se utilizzati con [[, gli operatori <e> ordinano lessicograficamente utilizzando le impostazioni internazionali correnti.
Questo offre un test avanzato per confrontare stringhe, numeri e file un po 'come le testofferte, ma più potente.
[ expr ]Restituisce uno stato 0 (vero) o 1 (falso) in base alla valutazione dell'espressione condizionale expr. Ogni operatore e oper e deve essere un argomento separato. Le espressioni sono composte dalle primarie sopra descritte in ESPRESSIONI CONDIZIONATE. test non accetta alcuna opzione, né accetta e ignora un argomento di - come indicante la fine delle opzioni.
[...]
Questo chiama test. In realtà, ai vecchi tempi, [era un collegamento simbolico a test. Funziona allo stesso modo e hai gli stessi limiti. Poiché un binario conosce il nome con cui è stato avviato, il programma di test può analizzare i parametri fino a quando non trova un parametro ]. Divertenti trucchi Unix.
Si noti che in caso di bash, [e testsono funzioni built-in (come detto in un commento), ma più o meno valgono le stesse limitazioni.