GNU/Linux >> Znalost Linux >  >> Linux

Jednoduchá závorka v přiřazení proměnné Bash?

Přemýšlel jsem o jednoduchých závorkách v bash. Vím, že se používají pro provádění příkazů v podshellech a že se používají k vytváření polí, ale používají se k něčemu jinému?

Jedna věc, která mě zaujala, je, že když použijete přiřazení proměnné in, jako

var=(hello)
echo $var    # hello

bash negeneruje chybu ani nic jiného a výstup je stejný jako if

var=hello

Jsou tyto dvě definice proměnných stejné nebo existuje rozdíl?

Přijatá odpověď:

Ve vašem případě závorka () se používají jako definice pole, například

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

Pokud do pole vložíte jednu proměnnou, máte pouze pole s jedním prvkem.

Abych odpověděl na vaši další otázku, zda se závorky používají také pro něco jiného:v bash existuje mnoho situací že v kombinaci s jinými znaky je lze použít jako:

  • náhrada příkazu:$()
  • záměna procesu:<() a >()
  • subshell:(command)
  • aritmetické vyhodnocení:(())
  • definice funkce:fun () { echo x; }
  • seznam vzorů v globu:?() , *() , +() , @() , !() (pouze pokud extglob je povolen )

Linux
  1. Jak vytvořit pole jedinečných prvků ze řetězce/pole v Bash?

  2. Bash Array Of Arrays?

  3. Linux bash:Přiřazení více proměnných

  1. Alias ​​s proměnnou v bash

  2. bash:vložte soubory seznamu do proměnné a velikost pole je 1

  3. Převeďte textový řetězec v bash na pole

  1. Výstupní kód přiřazení proměnné k substituci příkazu v Bash

  2. bash - shoda proměnné bez ohledu na velikost písmen

  3. Problémy s rozšiřováním proměnné bash pomocí jednoduchých uvozovek