비밀번호 생성기를 만드는 중인데 비밀번호를 올바르게 추가할 수 없습니다.
이건 내 스크립트야
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'