Qual è la differenza tra gli operatori bash [[vs [vs (vs ((

Qual è la differenza tra gli operatori bash [[vs [vs (vs ((
Bash fornisce diversi operatori per confrontare valori, condizioni di test ed eseguire operazioni matematiche. Questi operatori includono [[[, e (e (e spesso possono essere confusi per i nuovi utenti. Ecco una panoramica dei diversi operatori e delle loro funzioni.

Doppi parentene quadrate [[]]

I [[e]] sono usati per le espressioni condizionali in bash. La [[è una versione avanzata delle parentesi quadrate singole [] e viene utilizzata per la corrispondenza dei motivi, le espressioni regolari ed espressioni condizionali avanzate. [[L'operatore è più potente di [ed è preferito per molti casi.

#!Bin/Bash
String = Linux
if [[$ string == "linux"]; Poi
Echo "La stringa è Linux"
fi

Nel seguente codice, l'operatore a doppio quadro quadrata viene utilizzato per verificare se il valore della stringa $ variabile è uguale alla stringa "Linux":

Parentesi quadrate singole []

I [e] sono usati per le espressioni condizionali in bash. È anche chiamato comando "test". L'operatore singolo di staffe quadrate [viene utilizzato anche per le espressioni condizionali ma ha più limitazioni di [[[. È utile per confronti e test di base, come il controllo se esiste un file o se una stringa è vuota.

#!Bin/Bash
# Definisci il nome del file da controllare
file = "/home/aaliyan/documenti/bashfile2.sh"
# Controlla se il file esiste
if [-f $ file]; Poi
Echo "Il file esiste"
altro
echo "il file non esiste"
fi

Questo script controlla se un file chiamato "BashFile2.sh "esiste nella rispettiva directory e se esiste il file, stampare il messaggio" Il file esiste "sulla console altro sta stampando" Il file non esiste ":

Parentesi ()

L'operatore tra parentesi (viene utilizzato per eseguire i comandi in un ambiente sottosuolo. Ciò significa che eventuali modifiche apportate all'ambiente all'interno delle parentesi non influiscono sull'ambiente della shell genitore.

#!Bin/Bash
# Modifica la directory in/home/utente/directory ed elenca il suo contenuto
(CD/Home/Aaliyan/Documents && LS)

Nel seguente codice, l'operatore parentesi viene utilizzato per modificare la directory in/home/aaliyan/documenti ed eseguire il comando LS all'interno di una sottoshell:

Doppie parentesi (())

I ((e)) vengono utilizzati per la valutazione aritmetica e supporta caratteristiche più avanzate rispetto all'operatore singolo tra parentesi (, come le operazioni bitwise, di seguito è uno script bash che dimostra l'uso di doppie parentesi:

#!Bin/Bash
# Definisci i valori di A, B e C
a = 7
B = 9
c = 2
# Controlla se la somma di a e b è maggiore di c
if (($ a + $ b> $ c)); Poi
Echo "La somma di a e b è maggiore di c"
fi

Nel seguente codice, l'operatore a doppia parentesi viene utilizzato per verificare se la somma delle variabili $ a e $ b è maggiore del valore della variabile $ c:

Per comprendere ulteriormente le differenze tra questi operatori, ho dato una tabella che può aiutarti a scrivere codice bash più efficiente e utilizzare questi operatori bash in modo più efficace:

Operatore Scopo Esempio
[[espressione]] Espressioni condizionali if [[$ string == “Linux”]; quindi echo "La stringa è Linux"
[espressione] Espressioni condizionali di base if [-f $ file]; Quindi eco "Il file esiste"
(comando) Esegui i comandi in un ambiente sottosuolo (CD/Home/User/Directory && LS)
((espressione)) Operazioni aritmetiche if (($ a + $ b> $ c)); Quindi eco "La somma di a e b è maggiore di c"

Conclusione

Gli operatori bash [[]], [], () e (()) hanno usi e sintassi diversi. L'operatore a doppia staffa quadrata [[]] viene utilizzato per la corrispondenza del pattern e il confronto delle stringhe, mentre l'operatore a singolo quadrato [] viene utilizzato per istruzioni condizionali e test di file. L'operatore tra parentesi () viene utilizzato per raggruppare i comandi insieme e l'operatore doppia tra parentesi (()) viene utilizzato per la valutazione aritmetica. È importante utilizzare l'operatore appropriato per l'attività a portata di mano per garantire che gli script di Bash siano accurati ed efficienti.