Перебирая файлы bash скриптом - PullRequest
4 голосов
/ 13 марта 2012

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

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

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

4 голосов
/ 13 марта 2012

Попробуйте:

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

Спасибо!

Брэндон

2 голосов
/ 13 марта 2012

Объединение ответов других людей в один.

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

  • В сценарии все еще есть окончания строк Windows (вот что\r относится к; это символ, который Windows имеет в конце строки, а Unix - нет). bcarlso указал, что один .Выполните dos2unix над сценарием, чтобы разобраться с ним.

  • При назначении переменных в сценарии bash не должно быть пробелов вокруг знака =. scibuff обнаружил, что один .

    Ниже интерпретируется как попытка выполнить команду 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/*"
    
1 голос
/ 13 марта 2012

try

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

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

0 голосов
/ 19 августа 2014

Попробуйте использовать команду find

for i in `find /bow.../ -type f`
do
  echo "hello world"
done

потому что ls тоже вернет каталоги.

http://infofreund.de/bash-loop-through-files/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...