[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] duvida com if
From: |
Humberto Pereira |
Subject: |
Re: [shell-script] duvida com if |
Date: |
Fri, 19 May 2006 16:52:04 -0300 |
User-agent: |
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.2) Gecko/20060404 SeaMonkey/1.0.1 |
address@hidden wrote:
Oi Humberto,
Ainda nao deu certo... ele esta pegando todos os diretorios inclusive os que
estao na variavel $excluidos.
Uma pergunta, eu nao teria que comparar $files com cada pedaco do
$excluidos, tipo separar a string em partes e comparar com o $files?
Mas eh isso q o script faz.
Comentando o script:
#!/bin/bash
diretorio=/home/servidor/
excluidos="mp3 videos fotos" # isso seria nome de diretorios
Pega todos os arquivos em $diretorio
for file in $diretorio/* ; do
Ve se o arquivo eh um diretorio
if [ -d "$file" ]; then
Pega todas as palavras em $excluidos
for exc in $excluidos ; do
Compara cada palavra ($exc) com o diretorio ($file)
if [ "$file" = "$exc" ] ; then
Os 2 sao iguais, entao volta pro comeco do loop + externo.
continue 2
fi
done
Eh um diretorio e nao esta na lista, entao compacta.
tar -jcv "$diretorio$file" -f /root/backup_$file.tar.bz2
fi
done
Mas tem um detalhe q eu esqueci. Debugando ele aqui achei o erro (isso q
dar escrever sem testar)
A variavel $file tem o caminho completo do diretorio (por ex.
/home/servidor/mp3).
Entao, vc pode pegar o nome dele usando basename. Ficaria assim
#!/bin/bash
diretorio=/home/servidor/
excluidos="mp3 videos fotos" # isso seria nome de diretorios
#Pega todos os arquivos em $diretorio
for file in $diretorio/* ; do
#Ve se o arquivo eh um diretorio
if [ -d "$file" ]; then
#remove o caminho completo do diretorio
f=`basename $file`
#Pega todas as palavras em $excluidos
for exc in $excluidos ; do
#Compara cada palavra ($exc)
# com o diretorio ($f)
if [ "$f" = "$exc" ] ; then
#Os 2 sao iguais, entao volta
#pro comeco do loop + externo.
continue 2
fi
done
#Eh um diretorio e nao esta na lista, entao compacta.
tar -jcv "$diretorio$f" -f /root/backup_$f.tar.bz2
fi
done
Espero q isso resolva...
[]s
Humberto Pereira