поймать лог выполнения скрипта через ruby - PullRequest
1 голос
/ 16 мая 2011

Я попытался преобразовать большое количество PDF-файлов в изображения с помощью команды convert.Я читаю все файлы из моей папки, которые имеют файлы pdf и html, но файлы html имеют расширение «.pdf».Я получил эти файлы с удаленного сервера, поэтому я не могу проверить, какие файлы являются PDF-файлами, а какие нет.Я использовал этот код:

%x[convert "#{source_path}" "#{destination_path}".jpg]

Когда source_path указывает на HTML-файл, возвращается следующая ошибка:

GPL Ghostscript 8.60: неисправимая ошибка, код выхода 1конвертировать: не удалось делегат Postscript /home/20100.pdf': @ error/pdf.c/ReadPDFImage/645. convert: missing an image filename / home / test / 20100-1.jpg '@ error / convert.c / ConvertImageCommand / 2970.Ошибка успеха: / syntaxerror в -file- Стек операнда:

Стек выполнения:% interp_exit
.runexec2 --nostringval -
--nostringval-- --nostringval-- 2% stop_push --nostringval -
--nostringval-- --nostringval-- false 1% stop_push 1889 1
3% oparray_pop 1888 1 3
% oparray_pop 1872 1 3
% oparray_pop 1755 1 3
% oparray_pop --nostringval -
% errorexec_pop .runexec2
--nostringval-- --nostringval-- --nostringval-- 2% stop_push Стек словаря:
--dict: 1149/1684 (ro) (G) - --dict: 0/20 (G) - --dict: 70/200 (L) - Текущий режим выделения является локальным Текущая позиция файла 1

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

Ответы [ 3 ]

3 голосов
/ 16 мая 2011

Помимо решения Tokland, вы также можете использовать system, если вам не нужно возвращаемое значение команды (но только если она работала правильно):

>> system 'ls /etc/services'
/etc/services
=> true
>> system 'ls /etc/failfail'
ls: cannot access /etc/failfail: No such file or directory
=> false
3 голосов
/ 16 мая 2011

Да, проверьте, если $?.exitstatus равно 0.

>> %x{ls /etc/services}
=> "/etc/services\n"
>> $?.exitstatus
=> 0

>> %x{ls failfail}
ls: cannot access failfail: No such file or directory
=> ""
>> $?.exitstatus
=> 2
1 голос
/ 16 мая 2011

это должно конвертировать только файлы PDF в JPG.(новые файлы будут иметь расширение file.pdf.jpg)

ls -1 | xargs file | grep ': PDF document,' | sed 's/:.*//' | xargs -I % convert % %.jpg

или это приведет к преобразованию только pdf-файлов в filename.jpg

ls -1 | xargs file | grep ': PDF document,' | sed 's/:.*//' | while read file; do b=`basename $file .pdf`; convert $file $b.jpg; done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...