Сценарий оболочки с ImageMagick: зависает навсегда?

Я генерировал сценарий оболочки, который использует ImageMagick, чтобы преобразовать и обрезать приблизительно 18 000 изображений. Вот демонстрационная запись (таким образом, существует 18000 из них):

if [ ! -f ./cropped/16333-1.png ]
then
convert -crop 724x118+876+1989 ./lin/34.png ./cropped/16333-1.png
echo cropping 16333-1
fi
if [ ! -f ./cropped/16333-1_thumb.png ]
then
convert -define jpeg:size=400x100 ./cropped/16333-1.png -thumbnail '400x100>' -background transparent -gravity center -extent 400x100 ./cropped/16333-1_thumb.png
echo thumbing 16333-1
fi

Сценарий только работает приблизительно за 2 000 изображений прежде, чем зависнуть навсегда. Я пропускаю что-то или пропускаю память где-нибудь?

Спасибо за помощь!

ОБНОВЛЕНИЕ

Я пытался запустить скрипт с флагом-x, как предложено и сценарий, подвешенный после этой команды:

+ '[' '!' -f ./cropped/8967-1_thumb.png ']'
+ convert -define jpeg:size=400x100 ./cropped/8967-1.png -thumbnail '400x100>' -background transparent -gravity center -extent 400x100 ./cropped/8967-1_thumb.png

Однако, когда я прерываю сценарий и затем копирую и вставляю команду выше, это работает очень хорошо. Никакое зависание. Я могу затем возобновить сценарий, и он отправляется снова прекрасный.

Таинственный...

0
задан 29.12.2010, 19:10

1 ответ

Мое предположение - то, что существует некоторый метасимвол оболочки там где-нибудь, который сбивает его с толку.

Диагностировать и решить:

  1. Определите точно, где это останавливается
  2. Посмотрите на эти десять строк вокруг этого
  3. Ищите любого > < ! $ которых не оставляют

Поочередно, добавить -x к первой строке сценария так, чтобы Вы видели каждую команду, когда это выполняется. Это должно посмотреть что-то как:

#! /bin/bash -x
2
ответ дан 24.11.2019, 06:46

Теги

Похожие вопросы