Вы не можете с bash
. POSIX спецификация printf
утилиты также не поддерживает это. Придется перестраивать аргументы вручную.
Встроенные модули printf
(или print -f
) в ksh93
и zsh
поддерживают их:
$ printf '%2$s%1$s\n' a b
ba
GNU awk
или perl
также поддерживают его, так что если у вас установлен любой из них, в bash
вы можете переопределить printf
как функцию типа:
printf() { zsh -c 'printf "$@"' printf "$@"; }
или:
printf() { ksh93 -c 'printf "$@"' printf "$@"; }
Однако это потребует больше усилий с gawk
или perl
, так как gawk
не позволит вам передать ARGV
как есть, и ни gawk
, ни perl
не расширят \a6. последовательности
\x
(если только они не передают их буквально в своем коде в двойных кавычках) и они не поддерживают %b
(расширение утилиты printf
, используемой для эмуляции SysV echo
).
Из вывода использования чтения вы можете использовать флаг -a
.
read -p "array: " -a array