f7hpb.sh: не вызывать read без TTY — убрать зависание при запуске из скрипта/SSH
This commit is contained in:
parent
40ec91d363
commit
aea7459f02
13
f7hpb.sh
13
f7hpb.sh
|
|
@ -10,24 +10,29 @@ ERROR_LOG="/tmp/install-error-${ROLE}.log"
|
|||
log_error() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] ERROR: $*" >> "$ERROR_LOG"; echo "ERROR: $*" >&2; }
|
||||
log_warn() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] WARN: $*" >> "$ERROR_LOG"; echo "WARN: $*" >&2; }
|
||||
|
||||
# Два режима: если переменная передана (не пустая) — использовать; иначе — запросить ввод.
|
||||
# Интерактивен ли stdin (терминал). Без TTY read зависает при запуске из скрипта/SSH.
|
||||
is_interactive() { [ -t 0 ]; }
|
||||
|
||||
# Два режима: если переменная передана (не пустая) — использовать; иначе — запросить ввод (только при TTY).
|
||||
# Использование: get_var ИМЯ_ПЕРЕМЕННОЙ "Подсказка для пользователя"
|
||||
get_var() {
|
||||
local name="$1"
|
||||
local prompt="$2"
|
||||
local val="${!name}"
|
||||
if [ -z "$val" ]; then
|
||||
if is_interactive; then
|
||||
read -rp "$prompt: " val
|
||||
[ -z "$val" ] && { log_error "Переменная $name не задана."; exit 1; }
|
||||
fi
|
||||
[ -z "$val" ] && { log_error "Переменная $name не задана. Задайте в env-файле, аргументом KEY=value или запустите с TTY."; exit 1; }
|
||||
printf -v "$name" '%s' "$val"
|
||||
fi
|
||||
}
|
||||
# Опциональная переменная: запрос с возможностью оставить пустым
|
||||
# Опциональная переменная: запрос с возможностью оставить пустым (только при TTY)
|
||||
get_var_optional() {
|
||||
local name="$1"
|
||||
local prompt="$2"
|
||||
local val="${!name}"
|
||||
if [ -z "$val" ]; then
|
||||
if [ -z "$val" ] && is_interactive; then
|
||||
read -rp "$prompt: " val
|
||||
printf -v "$name" '%s' "$val"
|
||||
fi
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user