Provavelmente, como você suspeitou, apenas uma pequena alteração a ser corrigida, tente:
if [[ ! -z "$image" ]]; then
Explicação
Digamos que quando houver uma correspondência por exiftool e grep, sua variável $image
contenha isso:
abcabcabc
Mas quando não há saída, $image
contém: (nada)
Na sua condição de teste, você tinha:
if [[ ! -z "$image// }" ]]; then
Então, no primeiro caso, o bash vê isso:
if [[ ! -z "abcabcabc// }" ]]; then
Mas no segundo caso, bash vê isso:
if [[ ! -z "// }" ]]; then
O teste está dizendo que if "// }" is NOT zero-value, then...
, no entanto, "// }"
será sempre o valor zero, é algo, é uma string que consiste em duas barras, um espaço e uma chave. Portanto, como há algo lá, algo que não é de valor zero, é por isso que a parte then
é acionada mesmo quando você não tem correspondências em $image
. Então, removendo este // }
, deve funcionar.