我刚刚在某处看到了这段代码。
它允许用户输入他的密码并将其更改为星号/星号。
但它无法识别退格键。
代码认为退格键是密码的一部分。
我该怎么做才能让它识别退格键?
有人可以向我解释这段代码吗?
尤其是 IFS、读取选项和 $'\0'
谢谢!
这是代码。
\#!/bin/bash
unset password
prompt="Enter Password:"
while IFS= read -p "$prompt" -r -s -n 1 char
do
if [[ $char == $'\0' ]]
then
break
fi
prompt='*'
password+="$char"
done
echo
echo "Done. Password=$password"
Run Code Online (Sandbox Code Playgroud)
尝试这个:
#!/bin/bash
unset password
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"
Run Code Online (Sandbox Code Playgroud)
读取命令的选项是:
-p :提示字符串。
-r :不要使用反斜杠作为转义字符。
-s :静默模式,不回显输入。
-n 1 : 要输入的字符数。
read0除非\0遇到,否则返回,并将用户键入的字符放入char变量中。
该IFS=部分清除 IFS 变量,以确保您键入的任何空格或制表符都包含在密码中,而不是被read.
| 归档时间: |
|
| 查看次数: |
6328 次 |
| 最近记录: |