O que está acontecendo aqui é que quando você passa printf
mais argumentos do que os parâmetros de formatação posicional para ( %s
e outras coisas), ele irá repetir o formato. E está repetindo em várias linhas porque você tem \n
em sua string de formato. Não há nada de especial sobre $@
neste caso.
Por exemplo:
$ printf 'Foo: %s\n' bar baz
Foo: bar
Foo: baz
$ printf 'Foo: %s %s\n' bar baz
Foo: bar baz