Еще один скрипт bash (теперь .bat) - PullRequest
2 голосов
/ 11 июля 2010

Мне нужно конвертировать около 12000 файлов TIF во многих каталогах и попытаться написать bash-скрипт:

#!/bin/bash
find -name "*.tif" | while read f
do
 convert "$f" "${f%.*}.png"
 rm -f "$f"
done

Почему он говорит: x.sh: 6: Синтаксическая ошибка: неожиданный конец файла (ожидая "сделать") и что мне следует делать?


Большое спасибо вам всем, мужики, но меня обманули: компьютер, на котором это должно быть запущено, работает под Windows.Я не знаю, как работать со строками и циклами в DOS, теперь мой скрипт выглядит так:

FOR /R %i IN (*.tif) DO @ (set x=%i:tif%png) & (gm convert %i %xtif) & (erase /q /f %i)

% i - один из файлов .tif.

% x - имя файлас расширением .png

gm convert - графическая утилита magick, работает аналогично конвертации изображения magick в linux.

1 Ответ

3 голосов
/ 11 июля 2010

Синтаксис выглядит хорошо, но если это проблема с EOL, попробуйте добавить точку с запятой перед do, чтобы исправить синтаксическую ошибку (или проверьте, что новые строки действительно присутствуют / кодируются, как предполагает ghostdog74):

find -name "*.tif" | while read f ; do # ...

Обратите внимание, что шаблон поиска / чтения не является надежным.Use может напрямую использовать функцию find exec (спасибо Филиппу за встроенную команду):

find -name "*.tif" -exec sh -c 'file=$0 && convert "$file" "${file%.tif}.png"' '{}' ';' -delete
...