GNU/Linux >> Linux Esercitazione >  >> Linux

Parentesi singola nell'assegnazione delle variabili Bash?

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 se extglob è abilitato )

Linux
  1. Script Bash(I)

  2. Bash Dynamic (variabile) Nomi di variabili?

  3. Come creare una matrice di elementi unici da una stringa/array in Bash?

  4. `declar -a A` crea un array vuoto `a` in Bash?

  5. Bash array di array?

Variabile di esportazione Bash

Matrici Bash

Matrice associativa in Bash

Come impostare la variabile d'ambiente in Bash

Bash se su una sola riga

Problemi con la variabile bash che si espande con virgolette singole