Рассмотрим общую функцию ask()
, которая задает пользователю вопрос, читает ввод и сохраняет его в переменной, названной в соответствии с одним из аргументов функции ,Прочитайте ввод, сохраните его в динамически именованной переменной и проверьте, не был ли задан введенный ввод
ask() {
local question="$1"
local varname="$2"
echo "$question"
read $varname
}
Предположим, я хочу спросить у пользователя, что является его любимца и хранить ответ в переменной с именем $pet
. Использование будет выглядеть следующим образом:
ask "What is your favourite pet?" pet
То, что я хочу сделать, и нужно помочь, это проверить, если вход пользователя был пуст, и в этом случае установить вход пользователя в некоторую строку. Я мог бы сделать это легко, если имя переменной ввода пользователя хранится в постоянен, например, так:
if [ -z "$pet" ]; then
pet="foo"
fi
Однако имя переменной, я хочу, чтобы проверить, является ли пустым является то, Я перехожу в качестве второго аргумента. Как я могу проверить, пуста ли переменная (названная по значению $varname
), содержащая вход пользователя? Решение должно быть как можно более переносимым и стандартным, и должно работать именно в bash и zsh.
Это может оказаться полезным для вас: http://stackoverflow.com/questions/1921279/how-to-get-a-variable-value-if-variable-name-is-stores-as- строка – Noctua