Хорошо, похоже, нет хорошего способа сделать это. Я представляю этот ответ (хотя и не принимаю его) как возможное решение, которое я, вероятно, собираюсь использовать в ближайшей перспективе.
Вы можете собрать простые ответы массива в виде разделенных пробелами списков, а затем просто разобрать их в массивы bash следующим образом:
$ read ANS $ these are four values $ ANS=($ANS) $ for a in "$" do $ echo "Answer: $a" $ done $ $ # Outputs: $ # $ # Answer: these $ # Answer: are $ # Answer: four $ # Answer: values
Очевидно, что если вам нужно сделать что-то более сложное, чем это, вы облажались. Если вы хотите принимать значения с пробелами в них, вы можете запросить, чтобы пользователи указывали свои значения, а затем использовать eval
входящее значение, чтобы превратить его в массив:
$ read ANS $ these are 'four or five' values $ eval "ANS=($ANS)" $ for a in "$" do $ echo "Answer: $a" $ done $ $ # Outputs: $ # $ # Answer: these $ # Answer: are $ # Answer: four or five $ # Answer: values
Опять же, не идеально, но это то, что у меня так далеко.