![アドオン Echo [パスワードジェネレータ]](https://linux33.com/image/79639/%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3%20Echo%20%5B%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AC%E3%83%BC%E3%82%BF%5D.png)
パスワードジェネレータを作成していますが、パスワードを正しく追加できません。
これは私のスクリプトです。
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
echoへの複数の呼び出しをprintfへの1回の呼び出しで置き換えました。コマンドの置き換えにラップされたopensslへの呼び出しは、行末を消える副作用があり、改行は例に示されている誤って配置された改行の原因です。
答え2
問題は、openssl
「有用」とランダムな文字列の末尾に改行文字を入れることです。パイプから取り外すことができます。tr
openssl rand -hex 4 | tr -d '\n'