我正在创建一个密码生成器,但是我无法正确附加密码。
这是我的脚本
i="0"
while [ $i -lt 5 ]
do
echo -n '#' >> passwords.txt && openssl rand -hex 4 >> passwords.txt && echo -n '/' >> passwords.txt && echo -n 'X' >> passwords.txt
i=$[$i+1]
done
输出
#b887e0d0
/X#7093289e
/X#2210cfcd
/X#fd175e1f
/X#0c18fc9e
/X
预期输出
#b887e0d0/Z
#7093289e/Z
#2210cfcd/Z
#fd175e1f/Z
#0c18fc9e/Z
我怎样才能做到这一点,以便它不会跳过第一行,并且它按该顺序运行每个命令并将写入密码 txt 文件作为预期的输出。
谢谢。
答案1
这应该可以:
for i in {1..5}; do
printf '#%s/Z\n' "$(openssl rand -hex 4)"
done >passwords.txt
我用对 printf 的一次调用替换了对 echo 的多次调用。对 openssl 的调用包含在命令替换中会产生副作用,使行结尾消失,而换行符是示例中可见的错误放置的换行符的原因。
答案2
问题在于openssl
“有帮助”并在随机字符串的末尾放置换行符。您可以通过管道将其删除tr
openssl rand -hex 4 | tr -d '\n'