stty_orig=$(stty -g) # save original terminal setting.
stty -echo # turn-off echoing.
IFS= read -r passwd # read the password
stty "$stty_orig" # restore terminal setting.
Эта команда будет считывать переменную pwd со стандартного ввода (с отключенным эхом):
IFS= read -s -p Password: pwd
Отмена установки IFS позволит использовать начальные и конечные пробелы в паролях (которые могут поддерживаться в некоторых средах, поэтому лучше всего поддержите его во время ввода вашего скрипта учетных данных пользователя)
Для проверки правильности обработки начальных / конечных пробелов вы можете использовать:
echo -n "$pwd" | hexdump -C
Примечание: не используйте с настоящими паролями, так как они выгружаются на консоль!
HT: Рону ДюПлену за дополнительную информацию о снятии с охраны IFS.
Если вам нужно получить пароль, чтобы ввести его в качестве параметра в программу, то совет единорога просто отключить эхо будет правильным.
Проверка passwd в скрипте не работает - если пользователь может выполнить bash-скрипт, у него также есть разрешение прочитать его и увидеть passwd.
Если вы хотите разрешить запуск программы только людям с паролем, то безопасным способом будет создание новой учетной записи пользователя, владеющего программой, и скрипт, использующий 'sudo' для запуска программы от имени этого пользователя - он запросит пароль пользователя безопасным способом.