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 -e
il primo comando che genera un errore (diverso da alcuni come if
, while
etc.)
((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 expr
senza 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 test
offerte, 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 test
sono funzioni built-in (come detto in un commento), ma più o meno valgono le stesse limitazioni.