tgoop.com/bash_help/859
Create:
Last Update:
Last Update:
Одно работает с любой оболочкой Bash или Bash-подобной оболочкой, а другое соответствует POSIX, если вам нужна максимальная совместимость.
Скрипт ниже включает в себя оба решения.
Вы можете раскомментировать вариант 1 или 2 в зависимости от вашего случая использования.
#!/usr/bin/env bash
set -o errexit
set -o nounset
while true; do
printf "Please input your API key and hit enter: "
# ВАРИАНТ 1: ТРЕБУЕТСЯ ОБОЛОЧКА BASH ИЛИ BASH-ПОДОБНАЯ ОБОЛОЧКА (BASH, ZSH, ASH И Т. Д.)
read -sr key
# ВАРИАНТ 2: ДЛЯ МАКСИМАЛЬНОЙ СОВМЕСТИМОСТИ С ОБОЛОЧКАМИ (SH, DASH И Т. Д.)
# stty -echo
# read -r key
# stty echo
if [ -z "${key}" ]; then
printf "\n\nPlease input your API key or hit CTRL+c to halt this script\n\n"
else
# TODO: Вставьте свою пользовательскую логику, которая использует этот ключ.
printf "\n\nFor demo purposes, your API key is: %s\n" "${key}"
break
fi
done
-s
из read недоступен в sh и других минимальных оболочках.Флаг
-s
не позволяет передавать ввод пользователя через echo
.stty
, чтобы отключить эхо, возвращающее наш чувствительный текст, записать этот ввод в переменную, а затем снова включить echo
.