비밀번호 생성기가 OS X에서 작동하지 않습니다

비밀번호 생성기가 OS X에서 작동하지 않습니다

4개의 배열(소문자, 대문자, 기호 및 숫자)과 RANDOM 함수를 사용하여 비밀번호 생성기를 만들고 있습니다. 기본적으로 난수를 생성한 다음 이를 각 배열에 적용합니다.

이것은 내 스크립트입니다.

LOWER[0]="a"
LOWER[1]="b"
LOWER[2]="c"
LOWER[3]="d"
LOWER[4]="e"
LOWER[5]="f"
LOWER[6]="g"
LOWER[7]="h"
LOWER[8]="i"
LOWER[9]="j"
LOWER[10]="k"
LOWER[11]="l"
LOWER[12]="m"
LOWER[13]="n"
LOWER[14]="o"
LOWER[15]="p"
LOWER[16]="q"
LOWER[17]="r"
LOWER[18]="s"
LOWER[19]="t"
LOWER[20]="u"
LOWER[21]="v"
LOWER[22]="w"
LOWER[23]="x"
LOWER[24]="y"
LOWER[25]="z"

UPPER[0]="A"
UPPER[1]="B"
UPPER[2]="C"
UPPER[3]="D"
UPPER[4]="E"
UPPER[5]="F"
UPPER[6]="G"
UPPER[7]="H"
UPPER[8]="I"
UPPER[9]="J"
UPPER[10]="K"
UPPER[11]="L"
UPPER[12]="M"
UPPER[13]="N"
UPPER[14]="O"
UPPER[15]="P"
UPPER[16]="Q"
UPPER[17]="R"
UPPER[18]="S"
UPPER[19]="T"
UPPER[20]="U"
UPPER[21]="V"
UPPER[22]="W"
UPPER[23]="X"
UPPER[24]="Y"
UPPER[25]="Z"

SYMBOL[0]="!"
SYMBOL[1]="@"
SYMBOL[2]="#"
SYMBOL[3]="$"
SYMBOL[4]="%"
SYMBOL[5]="^"
SYMBOL[6]="&"
SYMBOL[7]="*"
SYMBOL[8]="("
SYMBOL[9]=")"

NUMBER[0]="1"
NUMBER[1]="2"
NUMBER[2]="3"
NUMBER[3]="4"
NUMBER[4]="5"
NUMBER[5]="6"
NUMBER[6]="7"
NUMBER[7]="8"
NUMBER[8]="9"
NUMBER[9]="0"

for i in {1..5}; do
  for j in {1..3}; do
    let RANDLOWER=$RANDOM%26
    let RANDUPPER=$RANDOM%26   
    let RANDSYMBOL=$RANDOM%10
    let RANDNUMBER=$RANDOM%10

    echo -n ${LOWER[$RANDLOWER]}
    echo -n ${UPPER[$RANDUPPER]}
    echo -n ${SYMBOL[$RANDSYMBOL]}
    echo -n ${NUMBER[$RANDNUMBER]}

  done >> passwords.txt
echo >> passwords.txt
done

그러나 빌드하고 출력할 때 passwords.txt스크립트가 실행 중인 모든 디렉터리 목록을 표시합니다.

예를 들어, ~이 스크립트를 디렉터리에서 실행하면 모든 디렉터리가 표시됩니다.

비밀번호.txt 출력

bRApplications Desktop Documents Downloads Library Movies Music Pictures Public passwords.txt9vN$3qC(1
sB$1tH#3uV&6
tK#3hK#2bE!
sM^4cP%5sC^3
sB&6lG)6lJ!6

예상 출력

sC@1zH&6wO$2
sQ@0vC@2hT%1
rL&7kY%5gY#1
wI#9hC&3oA&4
cZ%6uA!6xM(3

이 스크립트에서 누락된 부분은 무엇이며 왜 이 출력이 제공됩니까?

답변1

스크립트를 다음과 같이 편집하면 문제를 해결할 수 있습니다.

echo -n ${LOWER[$RANDLOWER]}${UPPER[$RANDUPPER]}${SYMBOL[$RANDSYMBOL]}${NUMBER[$RANDNUMBER]}

done >> passwords.txt
echo >> passwords.txt
done

나에게 그것은 예상되는 예제 출력을 제공합니다.

$ cat passwords.txt 
dI)9oF*5mG(1
pO&9rL%7cO^9
vB#8zF^4uN)3
hW(5dA%0sT^4
iQ*2hG*2gV!7

관련 정보