Bash

附加迴聲磷assword通用電氣_______磷一種ss在這rdG和n和r一種噸這rPassword Generator

  • December 17, 2015

我正在創建一個密碼生成器,但是我沒有正確附加密碼。

這是我的腳本

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 文件作為預期的輸出。

謝謝。

這應該這樣做:

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

我用對 printf 的一次呼叫替換了多次呼叫 echo。將對 openssl 的呼叫包裝在命令替換中具有使行尾消失的副作用,並且換行符是您的範例中可見換行符放置不當的原因。

問題是openssl“有幫助”並在隨機字元串的末尾放置一個換行符。您可以通過管道將其刪除tr

openssl rand -hex 4 | tr -d '\n'

引用自:https://unix.stackexchange.com/questions/249958