2016-08-13 3 views
0

나는 작동하지 않는 코드가 있습니다. "No such file or directory"라고 말하면 27 행에서 충돌합니다.Bash : while 루프 오류 "해당 파일이나 디렉토리가 없습니다"

while [ $i < $amount] 

그러나 이유는 알 수 없습니다. 누군가?

#!/bin/bash 
#WWGEN Aleandro 

small=$(echo "abcdefghijklmnopqrstuvwxyz") 
big=$(echo "ABCDEFGHIJKLMNOPQRSTUVWXYZ") 
C=$(echo "\"") 
D=$(echo '!') 
E=$(echo ",[email protected]#$%^&*()][{};:?-_+=") 
F=$(echo "") 

characters=$(echo $small$big$C$D$E$F) 

while getopts ":cl:p:" opt; do 
    case "$opt" in 
    c) characters=$(echo $big$C$D$E$F);; 
    l) length=$OPTARG ;; 
    p) amount=$OPTARG ;; 
    esac 
done 
shift $((OPTIND - 1)) 

i=0 

echo "amount: $amount" 
echo "length: $length" 

while [ $i < $amount] 

do 

echo "test" 
echo $characters | sed 's/\(.\)/\1\n/g ' | sed 's/^$//g'| shuf -n $length | paste -sd '' 

i=$[$i+1] 

done 

출력 :

bash wwgen.sh -l 6 -p 5 
amount: 5 
length: 6 
wwgen.sh: line 27: [: 0: binary operator expected 

구인 출력 : 이런 식 (6)의 길이 5 난수 생성 된 암호.

bash wwgen.sh -l 6 -p 5 
amount: 5 
length: 6 
69:AY 
O7H;= 
64]Z 
]^NL! 
(&NW5 
+0

을 (난 당신이 : 프랑스어에서 번역을 수행 할 수 있습니다). – melpomene

+1

텍스트를 텍스트로 게시하고 텍스트는 게시하지 않습니다. – melpomene

+0

업데이트, + 영문 코드 – Aleandro

답변

1
while [ $i < $aantal ] 

시도는 메시지를 설명 파일 $ aantal로부터 입력을 복용과 관련된 몇 가지 물건을 할 수 있습니다.

#!/bin/bash 
i=0 
a=2 
while [ $i -lt $a ] 
do 
    i=$[i+1] 
    echo $i 
done 

출력 :

1 
2 

그러나, 나는 내가 할 a을 정의하지 않는 경우 열등한 시험 사용을 위해

:

while [ $i -lt $aantal ] 

간단한 예를 들어 내 지점을 증명하기 위해 :

./test.sh: ligne 3 : [: 0 : opérateur unaire attendu 

즉`$의 aantal`에서`리디렉션 표준 입력 [인수`$ i`와`와`명령]을을`실행되기 때문에

+0

[$ i -lt $ aantal]은 작동하지 않습니다. "wwgen.sh : 27 행 : [: 0 : 2 진 연산자가 예상 됨] 오류가 발생합니다. $ aantal은 6 또는 7과 같은 숫자입니다. .... – Aleandro

+0

아마도 이번에는 스크립트에 적절한 옵션을 전달하지 않음으로써 (이 작업을 만든 간단한 테스트에서)'$ aantal'을 정의하지 않았기 때문입니다. 우리에게 유머 감각을주고 멜포 민 (melpomene)이 묻는대로 글을 게시하십시오. 귀하의 스크린 샷이 내 눈을 해 쳤고 완전히 복사/붙여 넣기를해도 테스트를 완료 할 수 없습니다. –

+0

Oke 게시물을 업데이트했습니다! – Aleandro

관련 문제