是否可以将某些内容(例如用户输入)存储到bash中的变量中?我有一个读取密码的脚本......
#!/bin/bash
while [ $# -gt 0 ]; do
key="$1";
case $key in
-p|--prompt)
if [ ! "$2" ]; then
printf "\e31;1mMust pass in a prompt\e[0m\n";
exit 1;
fi
printf "$2";
shift 2;
;;
esac
done
psswd=;
c=;
while [ "$c" != "^M" ]; do
read -n 1 -s c;
if [ "$c" == "^?" ]; then
if [ ${#psswd} -gt 0 ]; then
psswd=${psswd:: -1};
printf "\b \b";
fi
elif [ ! "$c" ]; then # pressed enter
break;
else
psswd="$psswd$c";
printf "*";
fi
done;
printf "\nYour entered password is: $psswd\n"
(抱歉,^M
是换行符,^?
是退格。意味着您无法复制和粘贴,但这就是它在vim中的显示方式,我不知道怎么回事写下来。)
...我想将密码加入变量中。您知道read
如何存储变量。如果read
可以做到,为什么我不能?有没有人有任何想法?
(或许有更好的方法来存储密码......比如echo "$psswd" | base64 > .pass
- 这实际上并不是我想做的。)
基本上,如何将psswd
放入shell外的变量? OR 关闭shell后如何访问密码?除了变量之外,还有更好的方法来存储它吗?
答案 0 :(得分:0)
正如rojomoke所说,这就足够了:
read -p "Enter your password: " -s pw
echo "You entered: $pw"
如果您执行此操作:read -n 1 -s c
并且只需按 Enter ,则$c
将为空,它将不会保留\r
;如果你点击退格键,在我的测试中,$ c会保存一个八进制值为177的字符
read -n 1 -s c
printf "%s" "$c" | od -c