Почему $ @ работает иначе m большинство других переменных в bash?

Кажется, что переменная $ @ поддерживает цитирование своих аргументов, так что, например:

$ function foo { for i in "$@"; do echo $i; done }
$ foo herp "hello world" derp
herp
hello world
derp

Я также знаю, что массивы bash работают одинаково:

$ a=(herp "hello world" derp)
$ for i in "${a[@]}"; do echo $i; done
herp
hello world
derp

Что на самом деле происходит с такими переменными? В частности, когда я добавляю в цитату что-то вроде «утка $ {a [@]} гусь». Если он не разделен пробелом, что это?

5
задан Jake 11 June 2011 в 05:25
поделиться