shell-script-pt
[Top][All Lists]
Advanced

[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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]