2012-03-13 2 views
4

Я пытаюсь запустить простой цикл через все скрипты файлов, но это дает мне следующую ошибку. Сценарий называется test.sh и я использую Cygwin на Windows, 7.Looping через файлы bash script

Мой сценарий:

#!/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 

Перед запуском сценария я превращали все файлы в папке в формат unix с использованием команды dos2unix.

ответ

4

Try:

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

Спасибо!

Brandon

+0

все еще дает мне' /test.sh: строка 4: сделать \ r' ошибку – dawnoflife

+0

Ммм ... I» m работает OSX, поэтому я не могу попробовать его в Cygwin, но вставляя этот код в свою оболочку и меняя каталог, он работает для меня. Вы также dos2unix ваш файл test.sh? – bcarlso

+0

О, я просто сделал это, и это сработало. благодаря! – dawnoflife

1

попробуйте

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

т.е. без пробелов вокруг '='

+0

Он по-прежнему дает мне дэ 'синтаксическую ошибку рядом с неожиданной лексемы $ сделать \ r' – dawnoflife

2

Сортировка ответов других людей в один.

Вы имеете две проблемы с этим сценарием:

  • Сценарий еще имеет концовки для Windows строки (это то, что \r относится к, это символ, который Windows, имеет в своих окончаниях строк, но Unix Безразлично» т). bcarlsopointed that one out. Запустите 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