С помощью powershell мы можем достичь этого как в 32, так и в 64 бит.
@ECHO OFF
set "psCommand=powershell -Command "$pword = read-host 'Enter Password' -AsSecureString ;^
$BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword);^
[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)""
for /f "usebackq delims=" %%p in (`%psCommand%`) do set password=%%p
echo %password%
С помощью этого мы можем получить пароль с *** в командной строке
В Баш скрипт мы можем достичь этого, используя ниже код.
#!/bin/bash
prompt="Enter Password:"
while IFS= read -p "$prompt" -r -s -n 1 char
do
if [[ $char == $'\0' ]]; then
break
fi
if [[ $char == $'\177' ]]; then
prompt=$'\b \b'
password="${password%?}"
else
prompt='*'
password+="$char"
fi
done
echo " "
echo "Done. Password=$password"
Варианты выполнения команды чтения являются: -p: Подскажите строку. -r: Не используйте обратную косую черту в качестве символа эвакуации. -s: Тихий режим, входы не отражены. -n 1: Количество символов для ввода.
чтение возвращает 0, если не встречается \ 0, а символ, который пользователь вводит, помещается в переменную char.
IFS = part очищает переменную IFS, которая гарантирует, что любые пробелы или символы табуляции, которые вы вводите, включаются в пароль, а не анализируются путем чтения.
возможно дубликат [Могу ли я замаскировать входной текст в файле летучей мыши] (http://stackoverflow.com/questions/664957/can-i- mask-an-input-text-in-a-bat-file) – Boann
Возможно, в следующий раз вы сможете немного уйти от Google, прежде чем задавать вопрос ... – RedX
@Boann, что вопрос пропущен в отношении bash. – RedX