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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Script de RSYNC


From: MrBiTs
Subject: Re: [shell-script] Script de RSYNC
Date: Tue, 10 Nov 2009 06:55:21 -0200

> diff <(cd $DIR_LOCAL; find . -type f -exec md5sum {} \;| sort -k 2) <(ssh 
> 10.10.191.112 'cd $DIR_REMOTO; find . -type f -exec md5sum {} \;| sort -k 2') 
> > $ARQ_DIFF
> A variável  $DIR_REMOTO retorna o valor de /home/user/pasta_spare/ mas na 
> linha do comando diff acima ela não está traduzindo esta variável para 
> "/home/user/pasta_spare/". Ao invés disso o comando está fazendo um diff 
> entre a pasta $DIR_LOCAL (que é /home/user/pasta_producao/) e a pasta home do 
> usuário user (estou rodando o script com ele).

Tem um negócio muito legal chamado interpolação de variáveis.

$ DIR_REMOTO='/home/user/pasta_spare/'
$ echo "$DIR_REMOTO"
/home/user/pasta_spare/
$ echo '$DIR_REMOTO'
$DIR_REMOTO

No seu comando:

$ echo ssh 10.10.191.112 'cd $DIR_REMOTO'
ssh 10.10.191.112 cd $DIR_REMOTO
$ echo ssh 10.10.191.112 "cd $DIR_REMOTO"
ssh 10.10.191.112 cd /home/user/pasta_spare/


CommandlineFU é um site MUITO bom, mas se você não tem o conhecimento
básico no seu ambiente, pode cair nessas armadilhas. Explicando, seu
interpretador de comandos não interpola variáveis que estão dentro de
aspas simples.

Aprenda a depurar seus scripts colocando um set -x antes do trecho que
quer depurar e um set +x logo após ele, ou chamando-o através de um
bash -x (isso, obviamente, se estiver usando bash como interpretador;
para outros, descubra a opção correta). Você teria visto uma mensagem
de erro dizendo que o diretório $DIR_REMOTO não existe. Como você não
testa essa condição de nenhuma maneira, não importa se o comando cd
deu certo ou não, você executa automaticamente o próximo comando.
Habitue-se a fazer testes no seu programa. Ao invés do ; você poderia
usar um &&, e o find seria executado somente se o cd tivesse dado
certo.

MrBiTs


reply via email to

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