2012-03-13 171 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命令的unix格式。

回答

4

嘗試:

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號線:做\ r'錯誤 – dawnoflife 2012-03-13 01:43:39

+0

嗯...我m運行OSX,所以我不能在Cygwin中嘗試它,但將該代碼粘貼到我的shell並更改它適用於我的目錄。你是否也dos2unix你的test.sh文件? – bcarlso 2012-03-13 01:52:29

+0

哦,我只是這樣做,它的工作。謝謝! – dawnoflife 2012-03-13 01:55:42

1

嘗試

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

即沒有空格周圍 '='

+0

它仍然給我靠近意外的標記$'德語法錯誤做\ r' – dawnoflife 2012-03-13 01:38:56

2

將其他人的答案整理成一個答案。

你已經兩個問題的腳本:

  • 腳本仍然有Windows行結尾(這是\r指的是什麼,它是Windows有其行結束字符,但Unix上沒有按」 T)。 bcarlso​​。通過腳本運行dos2unix將其排除。

  • 在bash腳本中分配變量時,=標誌周圍不能有空格。 scibuffcaught that one

    下面將被解釋爲試圖運行命令FILES(不存在)與參數= "/bowtie..."

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

    儘管下面被解釋爲分配"/bowtie..."給變量FILES

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

另外我會添加[常見警告](http://mywiki.wooledge。org/ParsingLs)來解析'ls'輸出。 – suvayu 2012-07-23 05:54:59