Изменение размера изображения в скрипте с помощью Imagemagick

Я бы хотел создать сценарий bash для изменения размеров изображений до 800 пикселей.

Мой код не работает в bash, но он работает, используя identify с одним изображением:

 #!/bin/bash for file in ./**/public/uploads/*.*; do width = $(identify -format "%w" ${file}) if [ width > 800 ] then echo $file // resize image fi done exit 0; 

Проблема: я получаю Permission denied в строке 3

Я попробовал решение, данное в одном из ответов ниже:

 #!/bin/bash shopt -s globstar for file in ./**/public/uploads/*.*; do width=$(identify -format "%w" "${file}") if [ "$width" -gt 800 ] then echo "$file" fi done exit 0; 

И теперь я получаю это сообщение об ошибке:

 identify.im6: Image corrupted ./folder/public/uploads/ffe92053ca8c61835aa5bc47371fd3e4.jpg @ error/gif.c/PingGIFImage/952. ./images.sh: line 6: width: command not found ./images.sh: line 7: [integer expression expected 

2 Solutions collect form web for “Изменение размера изображения в скрипте с помощью Imagemagick”

Я вижу две очевидные проблемы в вашем скрипте. Во-первых, ** предоставляется опцией globstar которая по умолчанию не globstar . Вероятно, вы активировали его в своей интерактивной оболочке, но вам нужно сделать это и для скрипта.

Тогда вы фактически не сравниваете $width а width строки. $ Необходимо в [ ] .

Последняя проблема заключается в том, что некоторые из файлов, с которыми вы работаете, повреждены или нет. В любом случае команда identify терпит неудачу, поэтому $width пуст. Простым решением было бы проверить, пуста ли $width ( -z "$width" ) и сравнивать только если это не ( ! -z "$width" ):

Попробуйте это вместо этого:

 #!/bin/bash shopt -s globstar for file in ./**/public/uploads/*.*; do width=$(identify -format "%w" "${file}") if [[ ! -z "$width" && "$width" -gt 800 ]] then echo "$file" fi done exit 0; 

Проблема (или, по крайней мере, одна из проблем) заключается в том, что вы говорите

 width = $(identify -format "%w" "${file}") 

Вам необходимо устранить пробелы до и после = , например:

 width=$(identify -format "%w" "${file}") 
  • Если проблема со статусом
  • как создать скрипт для резервного копирования баз данных MySQL на отдельные файлы?
  • Являются ли остальные выражения эквивалентными логическим и && или || и где я должен отдать предпочтение одному другому?
  • лучше несколько заменить фигурные скобки
  • Отправить команду в оболочку через Makefile
  • Как создать сценарий bash, который суммирует любое количество аргументов командной строки?
  • SSH вызывает остановку цикла
  • Вырезать письмо из каждой строки файла
  • Некоторые символы исчезают после обработки текстового файла
  • Удаление непустого каталога с помощью smbclient
  • команда bash / script для сброса маршрута по умолчанию
  • Interesting Posts

    Что делает `kill -0`?

    Как Node.js / модуль кластера передает новые соединения из процесса master / parent, дочерних процессов?

    Мой процесс был убит, но я не могу понять сообщение ядра

    Почему MV (1) копирует объекты, если разрешение на перенос отклонено?

    Имеете ли сервер на DigitalOcean только доступным SSH, что произойдет, если мой компьютер сломается?

    Как контролировать кластер Pacemaker с помощью скрипта?

    Linux Mint Fresh Install: слишком низкая чувствительность мыши

    Сохраняются ли журналы на прошлой работе?

    Как упаковать Django-сайт для Debian (не пакет Python или яйцо)?

    Можно ли монтировать трубку в cp?

    Как удалить имя из фамилии, когда длина неизвестна?

    Какую файловую систему следует использовать при передаче файлов между системами Linux?

    Что такое синтаксис bash для извлечения значений из нескольких экземпляров одного и того же аргумента?

    Изменение существующей записи маршрута в Linux

    Создание файла WORM

    Linux и Unix - лучшая ОС в мире.