2012-03-13 4 views
4

나는 모든 파일 스크립트를 통해 간단한 루프를 실행하려하지만 다음 오류가 발생합니다. 이 스크립트는 test.sh라고 내가 Windows에서 Cygwin에서 사용하고 7파일 루핑을 통한 파일 bash 스크립트

내 스크립트를

#!/bin/bash 
FILES = "/bowtie-0.12.7-win32/bowtie-0.12.7/output_635_25bp/*" 
for f in $FILES 
do 
    echo "hello world" 
done 

오류 :

./test.sh: line 2: FILES: command not found 
./test.sh: line 4: syntax error near unexpected token ``$'do\r'' 
./test.sh: line 4: ``do 

내가 폴더의 모든 파일을 변환 스크립트를 실행하기 전에 dos2unix 명령을 사용하여 유닉스 형식으로 변환하십시오.

답변

4

'='주위

FILES=/bow.../* 
for f in $FILES 
do 
    echo "hello world" 
done 

즉 공백을 시도하지보십시오 :

for f in `ls /bowtie-0.12.7-win32/bowtie-0.12.7/output_635_25bp/*`; do echo "hello world"; done 

감사합니다! 하나 하나에 다른 사람 '답변을 한 부씩 브랜든

+0

여전히 나에게'/test.sh 제공 : 라인 4 : – dawnoflife

+0

가 흠 ... 내가 '\ r' 오류를 수행하십시오 내가 OSX를 실행하기 때문에 Cygwin에서 실제로 시도 할 수는 없지만 코드를 쉘에 붙여 넣고 디렉토리를 변경하면 OSX가 제대로 동작한다. test2.sh 파일도 dos2unix 했습니까? – bcarlso

+0

오, 방금 했어. 감사! – dawnoflife

1

+0

은 아직도 나에게 예기치 않은 토큰 $ 근처 TEH'구문 오류를 제공 할 \ r' – dawnoflife

2

.

이 스크립트와이 문제를했습니다 :

  • 스크립트 여전히이 윈도우 라인 엔딩 (즉, \r가 참조 무엇, 그것은 윈도우가 라인 끝에서 가지고있는 캐릭터이지만, 유닉스 '아무튼 티). bcarlsopointed that one out. 스크립트를 통해 dos2unix을 실행하여 정렬하십시오.

  • bash 스크립트에서 변수를 할당 할 때 = 기호 주위에 공백을 사용할 수 없습니다. scibuffcaught that one.

    다음은 = "/bowtie..." 인수와 함께 FILES (존재하지 않음) 명령을 실행하려고 시도하는 것으로 해석됩니다. 아래 반면

    FILES = "/bowtie-0.12.7-win32/bowtie-0.12.7/output_635_25bp/*" 
    

    는 변수 FILES"/bowtie..."을 할당하는 것으로 해석된다 LS는 디렉토리를 너무 반환하기 때문에

    FILES="/bowtie-0.12.7-win32/bowtie-0.12.7/output_635_25bp/*" 
    
+0

또한 [일반적인 경고] (http : //mywiki.wooledge.org/ParsingLs)에 대해'ls' 결과물을 파싱합니다. – suvayu