<分区>
我从命令行获取用户输入的 .bat 文件命令是
set /p weblogicpassword=Enter weblogic password:%=%
我从 bash 脚本获取用户输入的 .sh 文件命令是
echo -n "Enter weblogic password: "
read weblogicpassword
现在当我们输入一些密码值时,这些值在命令行中可见。 我们如何从命令行获取密码值,这对于像 **
这样的用户来说应该是不可见的<分区>
我从命令行获取用户输入的 .bat 文件命令是
set /p weblogicpassword=Enter weblogic password:%=%
我从 bash 脚本获取用户输入的 .sh 文件命令是
echo -n "Enter weblogic password: "
read weblogicpassword
现在当我们输入一些密码值时,这些值在命令行中可见。 我们如何从命令行获取密码值,这对于像 **
这样的用户来说应该是不可见的最佳答案
通过使用 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%
通过使用这个我们可以在命令行中使用***获取密码
在 bash 脚本中,我们可以使用以下代码实现这一点。
#!/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,否则 read 返回 0,并将用户键入的字符放入 char 变量中。
IFS= 部分清除 IFS 变量,这确保您键入的任何空格或制表符都包含在密码中,而不是被读取解析出来。
关于bash - 如何使用****在命令行中隐藏密码并将值获取到.bat文件和.sh文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19950620/