Eu vejo dois problemas óbvios no seu script. Primeiro, o **
é fornecido pela opção globstar
, que não está ativada por padrão. Você provavelmente o ativou no seu shell interativo, mas também precisa fazer isso para o script.
Então, você não está realmente comparando $width
, mas a string width
. O $
é necessário em [ ]
.
O último problema é que alguns dos arquivos que você está executando são corrompidos ou não imagens. Em qualquer caso, o comando identify
falha neles, então $width
está vazio. Uma solução simples seria testar se $width
está vazio ( -z "$width"
) e comparar apenas se não for ( ! -z "$width"
):
Tente isso:
#!/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;