[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Dúvida sobre o comportamento do Bash.
From: |
Gentil de Bortoli Júnior |
Subject: |
Dúvida sobre o comportamento do Bash. |
Date: |
Mon, 14 Feb 2005 16:03:05 -0200 |
User-agent: |
Mozilla Thunderbird 1.0 (X11/20041206) |
Pessoal, minha vez.
Comecei a fazer um script para baixar os diretórios que quero de um
servidor FTP. Aliás, se alguém conhecer outra forma de fazer o que
esse script faz, me avise. :)
Nos testes, me deparei com um problema.
Troquei umas idéias com o colega MrBits mas... nada ainda.
O script pode ser executado recebendo apenas um diretório ou vários.
As saÃdas relevantes estão abaixo.
Observação: A linha imediatamente abaixo da linha onde o comando é
executado é um "echo" do que o script vai (ou deveria) executar após
as substituições de variáveis. Entenderam? Não?
Bom, no exemplo abaixo, essa linha que falei é a
"wget -r ftp://user:address@hidden/arquivos/Dir1"
########### [ Executando com apenas um diretório ]
$ ./pega.sh Dir1
wget -r ftp://user:address@hidden/arquivos/Dir1
--15:40:44--
ftp://user:*password*@ftp.exemplo.com.br/arquivos/Dir1
########### [ Executando com dois diretórios ]
$ ./pega.sh Dir1 Dir2
wget -r ftp://user:address@hidden/arquivos/{Dir1,Dir2}
--15:45:40--
ftp://user:*password*@ftp.exemplo.com.br/arquivos/%7BDir1,Dir2%7D
Reparem que no exemplo com dois diretórios, as chaves não foram
mantidas de forma literal. No lugar delas surgiram os códigos %7B e %7D.
Agora, executando o script com a opção -x, surge o X da questão (que é
o que está estragando, acho, o meu script).
Vejam:
########### [ Executando com apenas um diretório (opção -x) ]
Apenas linhas relevantes:
$ ./pega.sh Dir1
+ echo 'wget -r ftp://user:address@hidden/arquivos/Dir1'
wget -r ftp://user:address@hidden/arquivos/Dir1
+ wget -r ftp://user:address@hidden/arquivos/Dir1
--15:50:31-- ftp://user:*password*@ftp.exemplo.com.br/arquivos/Dir1
########### [ Executando com dois diretórios (opção -x) ]
Apenas linhas relevantes:
$ ./pega.sh Dir1 Dir2
+ echo 'wget -r ftp://user:address@hidden/arquivos/{Dir1,Dir2}'
wget -r ftp://user:address@hidden/arquivos/{Dir1,Dir2}
+ wget -r 'ftp://user:address@hidden/arquivos/{Dir1,Dir2}'
--15:51:47--
ftp://user:*password*@ftp.exemplo.com.br/arquivos/%7BDir1,Dir2%7D
Ou seja, nesse último caso o Bash inseriu aspas (' ') no meu comando,
que ficou assim:
wget -r 'ftp://user:address@hidden/arquivos/{Dir1,Dir2}'
Quando deveria ter ficado assim:
wget -r ftp://user:address@hidden/arquivos/{Dir1,Dir2}
Posto isso, vamos às perguntas. :)
1) Por quê o Bash inseriu essas aspas?
2) Há como evitar isso?
3) Há como contornar isso?
Eu posso usar um 'for' e resolver meu problema. Mas aà perde a graça.
Não vou ter mais o problema. :))
Posso também tentar uma solução com o comando ftp, mas, se eu quisesse
o ftp, estaria usando ele e não o wget. :)
Já tentei escapar várias coisas ali, inclusive as chaves.
Já tentei proteger algumas coisas com $' '.
Já dei echo em tudo quanto é lugar, executei de trás para frente e de
baixo para cima.
Com certeza única coisa que não tentei deve ser a que resolve o
problema... :)
Alguma idéia?
[]s
Gentil.
Ahh, sim, claro. Quem quiser ver o script, acesse:
www.bortoli.com.br/pega.txt
- Fazendo uma conexão SSH dentro de uma shel l?=, Cÿffffedcero Silbeze, 2005/02/14
- RE: [shell-script] Fazendo uma conexão SSH dentro de uma shell?=, MrBiTs, 2005/02/14
- Dúvida sobre o comportamento do Bash.,
Gentil de Bortoli Júnior <=
- Re: [shell-script] Dúvida sobre o comportamento do Bash., Eliphas Levy Theodoro, 2005/02/14
- Re: [shell-script] Dúvida sobre o comportamento do Bash., Gentil de Bortoli Júnior, 2005/02/14
- Re: [shell-script] Dúvida sobre o comportamento do Bash., Eliphas Levy Theodoro, 2005/02/14
- Re: [shell-script] Dúvida sobre o comportamento do Bash., Gentil de Bortoli Júnior, 2005/02/15
- Re: [shell-script] Dúvida sobre o comportamento do Bash., Rafael Lahm, 2005/02/16
- Re: [shell-script] Dúvida sobre o comportamento do Bash., Gentil de Bortoli Júnior, 2005/02/15
- Re: [shell-script] Dúvida sobre o comportamento do Bash., Gentil de Bortoli Júnior, 2005/02/15
RE: [shell-script] Fazendo uma conexão SSH dentro de uma shell?=, Cÿffffedcero Silbeze, 2005/02/15
Re: [shell-script] Fazendo uma conexão SSH dentro de uma shel l?=, Ricardo Barioni, 2005/02/14