Script shell com o ImageMagick: trava para sempre?

0

Gerei um script de shell que usa o ImageMagick para converter e cortar cerca de 18000 imagens. Aqui está um exemplo de entrada (então existem 18000 destes):

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

O script é executado apenas por cerca de 2000 imagens antes de ser interrompido para sempre. Estou sentindo falta de algo ou vazando memória em algum lugar?

Obrigado pela sua ajuda!

UPDATE

Eu tentei executar o script com o sinalizador -x, conforme sugerido, e o script foi interrompido após este comando:

+ '[' '!' -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

No entanto, quando eu interrompo o script e, em seguida, copio e colo o comando acima, ele funciona muito bem. Sem enforcamento. Eu posso então retomar o script, e ele sai novamente bem.

Misterioso ...

    
por AP257 29.12.2010 / 14:45

1 resposta

2

Meu palpite é que há algum metacaractere de shell em algum lugar que está tropeçando nele.

Para diagnosticar e resolver:

  1. Identifique exatamente onde ele pára
  2. Veja as dez linhas ao redor
  3. Procure por > < ! $ que não tenham escapado

Como alternativa, adicione -x à primeira linha do script para que você possa ver cada comando durante a execução. Deve ser algo como:

#! /bin/bash -x
    
por 29.12.2010 / 17:00