Bash Obtendo imagens com propriedades limitadas

1

Estou tentando criar um novo script bash simples para ações em massa em imagens. Eu preciso apenas de algumas fotos, neste caso, imagens maiores que 2Mb e com uma largura maior que 2000px. Mas parece que o meu script não funciona, eu tentei muitas variações, mas eu sempre recebo o comando de erro não encontrado na linha 10 .

Acho que meu problema reside na condição if e talvez na conversão de String para Integer ...

Estou usando o identificador (Pacotes do ImageMagick) para obter os parâmetros de todas as fotos.

¿O que estou fazendo errado?

#!/bin/bash

for d in */* ; do
        WIDTH="$(identify -format '%w' "$d")"
        WIDTH_LIMIT=$(($WIDTH+0))
        DATA="$(identify -format '%b' "$d")"
        SIZE=${DATA::-1}
        SIZE_LIMIT=$(($SIZE+0))
        if ["$WIDTH_LIMIT" -ge 2000] || ["$SIZE_LIMIT" -gt 2097152]
        then
        echo width in px: "$(($WIDTH+0))"px  ..  Size in bytes:  "$(($SIZE+0))" bytes
        fi

done
    
por Luke Marks 27.04.2018 / 13:35

1 resposta

1

[ é uma função integrada binária ou bash.
if aguarda a execução de algo que retornará 0 ou 1.
No seu caso, você tenta executar o programa: ["$WIDTH_LIMIT" com o argumento -ge e 2000] porque seu shell usa espaço para separar o argumento e ["$WIDTH_LIMIT" não é um comando binário ou bash apropriado.
Portanto, você deve sempre colocar espaço antes e depois de [ e ] , porque eles são comandos regulares. Você não pode digitar echo$UTY seu shell não o reconhecerá como um comando no PATH Eu percebo que é fácil lembrar a sintaxe [ porque tem uma página man. Tente man [ você verá que é apenas um arquivo executável ou um comando shell embutido (dependendo do seu sabor Unix / Linux) com argumento regular, ele precisa ter espaço depois dele.

    
por 27.04.2018 / 14:07