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 )