Как динамически читать переменные из stdin и сохранять их в массив

Вы не можете с 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).

2
18.11.2016, 22:56
1 ответ

Из вывода использования чтения вы можете использовать флаг -a .

read -p "array: " -a array
1
27.01.2020, 22:19

Теги

Похожие вопросы