Bash: Запрос данных у пользователя из скрипта
Как запросить пользовательские параметры из консольного скрипта.
Рабочий вариант:
test -n "$user" || read -r -p "Prompt: " reply </dev/tty
Проверяем опцию, спрашивает пользователя, ставим по умолчанию:
function randval() {
cat /dev/urandom | tr -dc "${1:-"a-zA-Z0-9"}" | fold -w "${2:-12}" | head -n 1
}
user=$(echo -n "$@" | grep -Po '(?<=--user[=| ])[^ "]+')
rand_user=$(randval 'a-z' 6)
test -n "$user" || read -r -p "Proxy user ($rand_user): " user </dev/tty
user=${user:-$rand_user}
Явное указание ..</dev/tty решает проблему ввода значения, когда скрипт выполняется из stdin:
curl qip.cx/vps/test.sh | sh -s -- --test OK ## $- = hBs
Простой вариант:
read -r -p "Prompt: " reply
Запросить значение, если не переменная не установлена:
test -n "$user" || read -r -p "Prompt: " reply
#bash #shell #prompt #read #variable #confirm