Sim, mas também não. É um tipo diferente de divisão.
$@
refere-se a uma matriz; Bash também permite que variáveis regulares sejam arrays e suporta expansões como ${var[*]}
ou ${var[@]}
. Este último também expande para todos os valores de $ var como palavras separadas.
No entanto, se a expansão estiver entre aspas duplas, então cada valor individual ainda se comporta como se fosse citado - ou seja, a divisão de palavras não acontece. Portanto, não há exceção em que regard - $@
vs "$@"
ainda seja igual a $foo
vs "$foo"
.
Demo
$ var=("Item 1" "Item 2 has spaces" "Item 3? Item 3.") $ declare -p var declare -a var=([0]="Item 1" [1]="Item 2 has spaces" [2]="Item 3? Item 3.") $ args "${var[*]}" argc = 2 argv[0] = args argv[1] = Item 1 Item 2 has spaces Item 3? Item 3. $ args "${var[@]}" argc = 4 argv[0] = args argv[1] = Item 1 argv[2] = Item 2 has spaces argv[3] = Item 3? Item 3. $ args ${var[@]} argc = 11 argv[0] = args argv[1] = Item argv[2] = 1 argv[3] = Item argv[4] = 2 argv[5] = has ...