'continue' no script BASH

1

Eu estava tentando encontrar as pastas na minha coleção de músicas que não contêm arquivos mp3 (algumas têm apenas arte de álbum, ou listas de reprodução e similares). Então eu tive algo parecido com isso em um script de shell.

#!/bin/bash
for DIR in *
do
        [[ -d "${DIR}" ]] || continue
        cd "${DIR}"

        ls *.mp3 > /dev/null 2>&1
        if [[ "$?" != "0" ]]
        then
                echo $DIR has no MP3 files!
                continue
        fi

        cd ..
done

Mesmo assim, embora haja muitas pastas, esse script só verifica o primeiro antes de sair ... por que isso acontece? É como se o continue dentro do if estivesse saindo totalmente do loop.

    
por Alex Reinking 23.01.2014 / 23:07

1 resposta

3

A instrução continuar dentro do bloco if é a fonte do seu problema:

Se nenhum arquivo MP3 for encontrado, cd .. não será executado e a condição [[ -d "${DIR}" ]] provavelmente falhará em todos os diretórios restantes.

    
por 23.01.2014 / 23:34

Tags