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