-1

Я создаю некоторые файлы пакета deb, и я столкнулся с несколькими случаями, в которых я хотел бы получить одно или несколько произвольных строковых значений (т. Е. НЕ множественный выбор) от пользователя. В настоящее время я не вижу способа сделать это, и мне интересно, если это возможно.

Примером может служить настройка пула пользователей-администраторов для машины. В этом случае я мог бы спросить:

$ Please add a user:
$ 
$ username: someuser
$ password:
$ password set successfully
$ 
$ User "someuser" successfully added. Would you like to add another? [y,n]: y
$
$ username: notheruser
$ password: 
$ password set successfully
$
$ Use "notheruser" successfully added.....

Предположительно это даст массив для пользователей и соответствующий массив для паролей. (Примечание: несколько надуманный пример, поэтому мне не интересно обсуждать, является ли этот конкретный вариант использования хорошей идеей.)

Существует ли какое-либо соглашение сообщества для решения этой проблемы? Есть ли решение по конфмодулю, о котором я не знаю?

1 ответ1

0

Хорошо, похоже, нет хорошего способа сделать это. Я представляю этот ответ (хотя и не принимаю его) как возможное решение, которое я, вероятно, собираюсь использовать в ближайшей перспективе.

Вы можете собрать простые ответы массива в виде разделенных пробелами списков, а затем просто разобрать их в массивы bash следующим образом:

$ read ANS
$ these are four values
$ ANS=($ANS)
$ for a in "${ANS[@]}" 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 "${ANS[@]}" do
$     echo "Answer: $a"
$ done
$ 
$ # Outputs:
$ #
$ # Answer: these
$ # Answer: are
$ # Answer: four or five
$ # Answer: values

Опять же, не идеально, но это то, что у меня так далеко.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .