2014-10-18 3 views
0

while 루프 내에서 for 루프를 실행 중입니다.bash에서 for 루프의 출력

peter 
roger 
casie 

내가 파일 A, B, C, D의 존재를 테스트 할 수있는 경로를 만들려고하고, I가 출력을 기대하고

전자 : 매개 변수로 전달

파일 내용을 가지고 be

/peter/a 
/peter/b 

등등.

대신에 나는 점점 오전

/aeter 
/beter 

내가 여기에 이해해야합니까? 코드를 검색 -

CODE :

while read fileLine; do 
    x=$fileLine 
    for i in a b c d e 
    do 
    echo /$x/$i 
    done 
done < $1 
+2

bash 4.2.8 및 Ubuntu 11.04에서 잘 작동합니다. – Cyrus

답변

1

는 분명히 당신의 입력 파일 \r\n의 창 끝 (end-of-line) 형식을 사용합니다. read\n을 제거하지만 \r은 남겨 둡니다. 문자열 /$x/$i이 인쇄되면 x 문자열 끝에 줄의 처음으로 "캐리지"가 반환되고 x의 슬래시 위에 슬래시가 인쇄되고 i의 문자가 첫 번째 문자 인 x에 인쇄됩니다.

당신은 마지막 문자를 제거해야

x=${fileLine%?} 

x=$fileLine 라인을 교체하여 문제를 해결할 수 있습니다.

+0

고마워요 오가 !! –