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

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

Re: [shell-script] Re: Funções com comando tee


From: Julio C. Neves
Subject: Re: [shell-script] Re: Funções com comando tee
Date: Wed, 31 Oct 2007 15:29:06 -0300

Em 31/10/07, miguelcm86 <address@hidden> escreveu:
>
>   Obrigado pessoal pela ajuda, já consegui resolver o problema.
> Não estava a perceber bem de facto como funcionava o Pipestatus agora
> já percebo :P
>
> Por acaso julio tinha lido um dos seus artigos o IX que falava dele.
>
> A parte do código do programa que estou a fazer ficou assim:
> (não é preciso perceber, é só para verem onde ajudaram :P)
> ...
> else echo "inicia a instalação"
> ./Main/Base/checknet.sh
> [ $? -ne 0 ] && Exit || exit 1
> Install | tee install.rep
> if [ ${PIPESTATUS[0]} -eq 1 ]
> then exit 0
> fi
> Option | tee option.rep
> ...
>




















Acho melhor trocar o:
./Main/Base/checknet.sh
[ $? -ne 0 ] && Exit || exit 1

Por:
./Main/Base/checknet.sh && exit 0 || exit 1

 Só fiquei com umas dúvidas ligeiras, para que serve ao certo o @,
> quando faziam o ${PIPESTATUS[@]} eu faço com *, fica ${PIPESTATUS[*]}.
> Mas pelo que vi num site é igual, só queria tirar a dúvida.
> http://tldp.org/LDP/abs/html/internalvariables.html
>






Veja a seguir o que escrevi sobre o tema no meu livro (em papel): OBS: Não
sei se em Pt existe uma fruta que no Brasil chama-se fruta do conde.
Às mulheres da minha vida que aturam a minha rabugência:

De forma idêntica ao que vimos em passagem de parâmetros, o asterisco (*) e
a arroba (@) servem para listar todos. Desta forma, para listar todos os
elementos de um vetor podemos fazer:

*$ echo ${Frutas[*]}*

abacaxi banana laranja tangerina fruta do conde fruta pão


 Ou:

*$ echo ${Frutas[@]}*

abacaxi banana laranja tangerina fruta do conde fruta pão


 E qual será a diferença entre as duas formas de uso? Bem, como poucos
exemplos valem mais que muito blá-blá-blá, vamos listar todas as frutas, uma
em cada linha:

*$ for fruta in ${Frutas[*]}*

*> do*

*> echo $fruta*

*> done*

abacaxi

banana

laranja

tangerina

fruta

do

conde

fruta

pão


 Ops, não era isso que eu queria! Repare que a fruta do conde e a
fruta pão ficaram
quebradas. Vamos tentar usando arroba (@):

*$ for fruta in ${Frutas[@]}*

*> do*

*> echo $fruta*

*> done*

abacaxi

banana

laranja

tangerina

fruta

do

conde

fruta

pão


 Hiii, deu a mesma resposta! Ahh, já sei! O *Bash* está vendo o espaço em
branco entre as palavras de fruta do conde e fruta pão como um separador de
campos (veja o que foi dito anteriormente sobre a variável $IFS) e parte as
frutas em pedaços. Como já sabemos, devemos usar aspas para proteger estas
frutas da curiosidade do *Shell*. Então vamos tentar novamente:

*$ for fruta in "${Frutas[*]"}*

*> do*

*> echo $fruta*

*> done*

abacaxi banana laranja tangerina fruta do conde fruta pão


 Epa, piorou! Então vamos continuar tentando:

*$ for fruta in "${Frutas[@]}"*

*> do*

*> echo $fruta*

*> done*

abacaxi

banana

laranja

tangerina

fruta do conde

fruta pão


 *Voilà*! Agora funcionou! Então é isso, quando usamos a arroba (@), ela não
parte o elemento do vetor em listagens como a que fizemos. Isto também é
válido quando estamos falando de passagem de parâmetro e da substituição de$@.

Para obtermos a quantidade de elementos de um vetor, ainda semelhantemente à
passagem de parâmetros, fazemos:

*$ echo ${#Frutas[*]}*

6


 Ou

*$ echo ${#Frutas[@]}*

6

O código está um pouco para o complicado porque dentro de uma função
> não consigo dar um Exit 1 e ele sair do script. Ele retoma á função
> que o chamou e não sai logo. Por isso acabo por usar o return, e como
> fiz está a funcionar bem.
>
> Julio quanto a traduzir eu posso fazer isso na boa, é mesmo fácil, só
> que não percebo para que quer traduzir, se os portugueses percebem
> muito bem o brasileiro.
> Como sempre digo o que temos mais de parecido é sem dúvida a língua,
> porque no resto somos muito diferentes. Tenho familiares e amigos
> brasileiros por isso noto bem isso.
> Temos culturas quase que opostas, e ao efectuar a tradução o problema
> estaria aí, é que o texto em português iria parecer uma piada e não
> algo sério.
> Como está em brasileiro percebe-se logo que é piada de brasileiro e
> está tudo bem, mas em português não irá suar pelo menos para os
> portugueses nada bem, ficaria uma palhaçada. Poderei é modificar e
> ficar mais apto para a nossa cultura, mas isso obriga a mudar um pouco
> a forma como fala e deixa de ser uma tradução pura.
> Agora a questão é se é mesmo necessário, é que os portugueses não tem
> problemas nenhuns em ler isso.
> O facto dos portugueses não gostarem da literatura brasileira e suas
> ideias, é que acham que estão sempre no gozo e nunca se sabe até que
> ponto é real. Somos um povo exactamente oposto, somos um povo triste e
> estamos sempre a lamentarmos, e voçês um povo mega alegra em que tudo
> é piada. Basta tentar perceber a letra de um fado para ver isso, o
> fado é a nossa canção de rua, o que supostamente cantávamos por aí
> para ocupar o tempo e com um ar muito sério, de certa forma é assim as
> nossas raízes. Voçês têm o samba que é exactamente o oposto.
> Nunca se esqueça que o mais parecido entre nós é a língua, o resto é
> tão diferente.
>
> Se tiver uma opinião diferente, diga qualquer coisa, eu posso fazer as
> traduções.
>





































Depois que falastes isso passei a concordar contigo e desisti da conversão
para o pt_PT. Discordo no entanto, quando dissestes que o português é triste
(sou casado com uma portuguesa há 31 anos), acho-o sério.

Qto ao fado, este sim é realmente triste, mas são reminiscências de outrora.
A música francesa (tipo Edith Piaf) é mais triste ainda... Acabei de voltar
daí e em todos os lugares que estive e todas as rádios que ouvi, só tocavam
rock e rap.

Abraços e obrigado pelas ajudas Tiago Barcelos e Carlos Ferreira
> Júlio Neves a você em especial de ter-me trazido até aqui.
>




Abraço para vc tb e espero vê-lo breve aqui no Rio de Janeiro,
Julio



>



-- 
Abraços,
Julio
http://www.julioneves.com - Um livro sobre Bash completo e on-line
:wq


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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