Из утилиты posix printf :
- Операнд формата должен использоваться повторно так часто, как это необходимо для удовлетворения операндов аргумента.
Это точно означает, что строка формата повторяется столько раз, сколько необходимо для прохождения всех аргументов. Именно так оно и было задумано, и это одна из самых полезных функций printf.
Вы хотите повторить символ '#' 10 раз? Нет ничего проще:
printf "#%.0s" $(seq 10)
# will expand to:
printf "#%.0s" 1 2 3 4 5 6 7 8 9 10
# is equivalent to:
printf "#%.0s#%.0s#%.0s#%.0s#%.0s#%.0s#%.0s#%.0s#%.0s#%.0s" 1 2 3 4 5 6 7 8 9 10
%.0s
будет печатать нулевой символ из строки, поэтому он будет печатать нулевой символ, поэтому он ничего не будет печатать. Таким образом, #
повторяется столько раз, сколько аргументов.
У вас есть массив, и вы хотите напечатать все элементы массива, разделенные новой строкой? Нет ничего проще:
arr=(1 2 3 value1 test5 text7)
printf "%s\n" "${arr[@]}"