2013-10-24 4 views
-1

Я получил совет для do not parse ls, как описывает на этом сайте: Don't parse ls.
Я искал DAILY файлов в моем каталоге, так это то, что я сделал тогда:Parsing ls, не рекомендуется

for f in *.DA*; do 
    [[ -e $f ]] || continue 
    for file in $f; do 
     echo "The file that you are working on: "$file 
     archiveContent=$(sed -n -e 1p $file) 
     echo $archiveContent 
    done 
done 

Хорошо, что хорошо работает, у меня есть два файла A.DAILY и B.DAILY, с обоих архивами, я могу получить то, что внутри него, но когда я немного изменил цикл, он не повторяется со всеми файлами с расширением .DAILY в моем каталоге.

for f in *.DA*; do  
    [[ -e $f ]] || continue  
    for file in $f; do  
     echo "The file that you are working on: "$file  
     archiveContent=$(sed -n -e 1p $file) 
     echo $archiveContent 
     COMPRESS $archiveContent;  
    done 
done 

, когда я назвал функцию внутри цикла, цикл просто делает для первого файла, а не на второй.

+0

'$ f' - это одно имя файла, поэтому внутренний цикл имеет только одну итерацию, где' $ file' имеет то же значение, что и '$ f'. – chepner

+0

Что вы предлагаете делать? Я думал, что цикл, итерация по файлам, потому что, без comumand COMPRESS $ archiveContent, это показывает мне: 'Файл, над которым вы работаете: A.DAILY содержание A.DAILY Файл что вы работаете над: B.DAILY содержание B.DAILY' –

+0

Капля внутреннего контура? Это не служит никакой цели. – chepner

ответ

1

Поскольку внешний цикл устанавливает f в каждый файл по очереди, ваш внутренний цикл, кажется, не служит какой-либо цели.

for f in *.DA*; do 
    [[ -e $f ]] || continue  
    echo "The file that you are working on: $f"  
    archiveContent=$(sed -n -e 1p "$f") 
    echo "$archiveContent" 
    COMPRESS "$archiveContent" 
done 
+0

не работает, проблема, возможно, связана с функцией 'COMPRESS', которая принимает аргумент, а затем ищет один архив и сжимает, когда это делается, больше ничего не делать ... Итак, в этом цикле '# COMPRESS' прокомментировал, что он работает как другой, который я опубликовал ... –

+0

Если вы считаете, что проблема связана с' COMPRESS', возможно, вы можете поделиться тем, что она делает. – chepner

+0

Функция сжатия делает это: 'COMPRESS() { # Эта функция выполняет сжатие каждого изображения tar -czf $ {imageName- $ date} .tar.gz $ {imageBasename} 2 >> $ ERRORLOG if [$? -eq 0] затем эхо «успех компресс из файла: $ {imageBasename}» еще эхо «Некоторые ошибки появляется в сценарии, смотрите файл журнала Более подробное описание» fi' Извините за то, как комментарий код выглядит так, я пытался форматировать, а также я разрезал кучу строк функции «COMPRESS» ... –

Смежные вопросы