Кажется, что переменная $ @ поддерживает цитирование своих аргументов, так что, например:
$ 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 [@]} гусь». Если он не разделен пробелом, что это?