Unix: Procurando executar um script em diretórios com um certo nome

0

Estou escrevendo um script no bash.

Se eu estiver no diretório Foo, eu quero rodar este script apenas nos subdiretórios do foo que são chamados foo com até três números após foo.

Ex: foo1, foo23, foo345 etc.

Teste é o nome do meu script.

Isso é o que eu tenho até agora. Não consigo me lembrar de como especificar exatamente quais diretórios eu quero que esse script procure.

Outras coisas importantes: Estou executando no cliente ssh.

for i in foo*
    do                 
        if [ -d $i ]   
            then
               sh ./test 
               echo "Test is working."
        fi
    done
    
por user2419571 28.01.2015 / 16:34

1 resposta

1

A maneira correta de fazer isso é fazer o script pegar o diretório como um parâmetro:

for directory in foo*/
do
    ./test.sh "$directory"
done

A barra no final do loop for garante que ele faça loops em diretórios e links simbólicos para diretórios. Passar o diretório para o script garante que você possa mover o script e o diretório de destino em qualquer lugar sem fazer nada especial para fazê-lo funcionar.

Para ser mais específico no que diz respeito à seleção de diretórios, você vai querer ler sobre globs , especialmente a seção sobre extglob .

    
por 28.01.2015 / 16:53

Tags