애드온 Echo [비밀번호 생성기]

애드온 Echo [비밀번호 생성기]

비밀번호 생성기를 만드는 중인데 비밀번호를 올바르게 추가할 수 없습니다.

이건 내 스크립트야

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에 대한 한 번의 호출로 대체했습니다. 명령 대체에 래핑된 openssl에 대한 호출은 줄 끝을 사라지게 하는 부작용이 있으며, 줄 바꿈은 예제에 표시되는 잘못 배치된 줄 바꿈의 원인입니다.

답변2

문제는 openssl"유용함"과 임의의 문자열 끝에 개행 문자를 넣는 것입니다. 파이프를 통해 제거할 수 있습니다.tr

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

관련 정보