Qual è la differenza tra $ {var}, “$ var” e “$ {var}” nella shell Bash?

Cosa dice il titolo: cosa significa incapsulare una variabile in {} , "" o "{} “? Non sono stato in grado di trovare spiegazioni online su questo – non sono stato in grado di riferirmi a loro tranne che per usare i simboli, che non producono nulla.

Ecco un esempio:

 declare -a groups groups+=("CN=exampleexample,OU=exampleexample,OU=exampleexample,DC=example,DC=com") groups+=("CN=example example,OU=example example,OU=example example,DC=example,DC=com") 

Questo:

 for group in "${groups[@]}"; do echo $group done 

Si rivela molto diverso da questo:

 for group in $groups; do echo $group done 

e questo:

 for group in ${groups}; do echo $group done 

Solo il primo realizza ciò che voglio: per scorrere tutti gli elementi dell’array. Non sono molto chiaro sulle differenze tra $groups , "$groups" , ${groups} e "${groups}" . Se qualcuno potesse spiegarlo, lo apprezzerei.

Come una domanda in più – qualcuno conosce il modo accettato di fare riferimento a questi incapsulamenti?