Я вижу в вашем сценарии две очевидные проблемы. Во-первых, **
предоставляется параметром 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;