附加回声 [密码生成器]

Rya*_*don 1 osx bash echo random hex

我正在创建一个密码生成器,但是我没有得到正确附加的密码。

这是我的脚本

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
Run Code Online (Sandbox Code Playgroud)

输出

#b887e0d0
/X#7093289e
/X#2210cfcd
/X#fd175e1f
/X#0c18fc9e
/X
Run Code Online (Sandbox Code Playgroud)

预期产出

#b887e0d0/Z
#7093289e/Z
#2210cfcd/Z
#fd175e1f/Z
#0c18fc9e/Z
Run Code Online (Sandbox Code Playgroud)

我怎样才能使它不跳过第一行,并使其按该顺序运行每个命令并将写入密码txt文件作为预期输出。

谢谢。

dha*_*hag 6

这应该做:

for i in {1..5}; do
    printf '#%s/Z\n' "$(openssl rand -hex 4)"
done >passwords.txt
Run Code Online (Sandbox Code Playgroud)

我用一次对 printf 的调用替换了对 echo 的多次调用。在命令替换中包含对 openssl 的调用具有使行结尾消失的副作用,并且该换行符是导致您的示例中可见的换行符位置不当的原因。


Dav*_*ing 5

问题在于openssl“有帮助”并在随机字符串的末尾放置换行符。您可以通过管道将其删除tr

openssl rand -hex 4 | tr -d '\n'
Run Code Online (Sandbox Code Playgroud)