Bash: Запрос данных у пользователя из скрипта

Категория: 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

категория: Bash