Mi chiedevo le parentesi singole in bash. So che sono usati per eseguire comandi nelle sottoshell e che sono usati per creare array, ma servono per qualcos'altro?
Una cosa che ha attirato la mia attenzione è che quando usi l'assegnazione variabile in, come
var=(hello)
echo $var # hello
bash non genera un errore o altro e l'output è lo stesso di se
var=hello
Queste due definizioni di variabile sono le stesse o c'è una differenza?
Risposta accettata:
Nel tuo caso tra parentesi ()
sono usati come definizione di array, ad esempio
a=(one two three) # array definition
echo "${a}" # print first element of array a
echo "${a[0]}" # print first element of array a
echo "${a[1]}" # print *second* element of array a
echo "${#a[@]}" # print number of elements in array a
Se metti una singola variabile nell'array, hai solo un array con un singolo elemento.
Per rispondere all'altra tua domanda se le parentesi sono usate anche per qualcos'altro:ci sono molte situazioni in bash
che in combinazione con altri personaggi possono essere usati come:
- sostituzione comando:
$()
- Sostituzione processo:
<()
e>()
- sottoshell:
(command)
- valutazione aritmetica:
(())
- definizione della funzione:
fun () { echo x; }
- elenco di modelli in glob:
?()
,*()
,+()
,@()
,!()
(solo seextglob
è abilitato )