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

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

Re: [shell-script] Dúvidaprimária...


From: Julio Neves
Subject: Re: [shell-script] Dúvidaprimária...
Date: Wed, 12 Sep 2001 15:45:48 -0300

Ah Renato,
me esqueci de falar de + um caracter, que apesar de vc não ter solicitado, 
vale a pena falar. São os parêteses, cuja finalidade é chamar um sub-shell 
para executar o seu conteúdo. veja esta seqüência de comandos:
prompt> pwd
/home/renato
prompt> (cd / ; ls -l)
será listado o conteúdo do diretório raiz
prompt> pwd
/home/renato

Como vc pode ver, foi criado um sub-shell que foi ao diretório raiz, 
listou o seu conteúdo e morreu, voltando ao shell pai que estava no seu 
diretório home. Outra forma de vc verificar é fazer:
prompt> pwd
/home/renato
prompt> (cd / ; pwd)
/
prompt> pwd
/home/renato

Ou faça um sleep longo entre parênteses e liste os processos em execução 
com um ps -ax, que vc verá os PID dos shell decorrentes da sua execução.

[ ]s,
Julio


Favor responder a address@hidden
Para:   address@hidden
cc: 
Assunto:        Re: [shell-script]  Dúvidaprimária...

Favor responder a address@hidden
Para:   address@hidden
cc: 
Assunto:        Re: [shell-script] Dúvidaprimária...

Oba...
Mais alguém que se confunde com isso.
No livro do Júlio tem isso, mas eu li rapidamente e não entendi direito...
Será que alguém pode mastigar isso para nós?
Aquela explicação de pai pra filho, hehe...
[]'s
Renato
=====================================================================
Vamulá meu filho Renato,
vou deixar mais mastigado que o Word Trade Center (humor negro, né?)

Crase ou acento grave - servem para dar prioridade na execução de um 
comando. P. ex:
echo No momento estão logadas as seguintes pessoas: `who`
Neste caso é necessário que o comando who tenha sido executado antes do 
echo, para isso é necessário colocá-lo entre crase.

Obs. o exemplo acima tb poderia ser escrito da seguinte forma:
echo No momento estão logadas as seguintes pessoas: $(who)
O efeito seria exatamente o mesmo, exceto que nem todos os shells (p. ex. 
boune shell) suportam esta construção.

Apóstrofos ou Plics - servem para protejer o que está no seu interior, da 
interpretação do shell p. ex:
se vc colocasse o mesmo exemplo acima entre plics, fazendo:
echo 'No momento estão logadas as seguintes pessoas: `who`'
O resultado seria:
No momento estão logadas as seguintes pessoas: `who`
Isto é, nem as crases seriam interpretadas pelo shell, isto é, deve ser 
usado para passar algo que o shell não possa ver, e que será tratado por 
um comando. Por exemplo:
grep '^renato' /etc/passwd
Neste caso eu quero que o circunflexo seja interpretado pelo grep e não 
pelo shell. Um outro exemplo legal é o seguinte:
Suponha que vc criou um arquivo chamado * (em alguns sabores isto é 
possível. Já testei no SRV4) e deseja removê-lo. Se vc fizer rm * já viu a 

lambança, né? Então faça:
rm '*' ou rm \*
a contrabarra tem a mesma função das plicas, exceto que elas protejem um 
único caracter que a segue.

Aspas ou Caspas - Têm a mesma finalidade das plicas, exceto que não 
protejem o cifrão, a contrabarra e as crases. O exemplo acima teria sido 
perfeitamante executado se eu fizesse:
echo "No momento estão logadas as seguintes pessoas: `who`"
ou
echo "No momento estão logadas as seguintes pessoas: $(who)"
No caso do grep '^renato' /etc/passwd, supondo que o login name da pessoa 
que quero saber se esta cadastrado como usuário do meu sistema, esteja na 
variável usuario, devemos fazer:
grep "^$usuario" /etc/passwd
Desta forma as caspas protejeram o circunflexo mas não protejeram o 
cifrão, permitindo que o shell substituisse o nome da variável pelo seu 
conteúdo antes da instrução ser executada.

Esta msg foi escrita nas coxas, para maiores detalhes releia com atenção, 
o conteúdo das páginas 11-13 do meu livro.

[ ]s,
Julio Cezar Neves
Em Segunda 10 Setembro 2001 03:17, you wrote:
> Ola para Todos.
>
> A minha confusão com isso é muito grande. Aproveitando quando devo usar
>
> - aspas dupla
> - aspas simples
> - crase
>
> Obrigado
> -- Mensagem original --
>
> >Eu também fico "enrolado" com as histórias de "aspas duplas", "aspas
> >simples", "abra aspa simples" (sinal de crase), etc.
> >Para funcionar troque a "aspa dupla" pela "crase"
> >
> >com=`ls -l`
> >echo $com
> >
> >Melchiors
> >
> >
> >
> >
> >
> >
> >
> >
> >Renato Marques Alvim Neto <address@hidden>
> >08/09/2001 00:33
> >Please respond to shell-script
> >
> >
> >        To:     address@hidden
> >        cc:
> >        Subject:        [shell-script] Dúvidaprimária...
> >
> >
> >Alo, amigos...
> >Como posso mover um comando para uma variável?
> >Por exemplo, quero que
> >com contenha ls -l
> >para depois fazer
> >echo $com
> >Mas se eu uso :
> >com="ls -l"
> >echo $com
> >não funciona...
> >É impresso "ls -l" como uma string
> >Esta é uma pergunta simples, mas preciso saber como...
> >Agradeço a atenção...
> >
> >[]'s
> >
> >--
> >-------------------------------------------------
> >Renato Alvim - membro da Brasil Soka Gakkai
> >-------------------------------------------------
> >
> >Sair da lista: address@hidden
> >Banco Dados:   http://www.egroups.com/group/shell-script
> >
> >Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
> > http://br.yahoo.com/info/utos.html
> >
> >
> >
> >
> >
> >
> >
> >[As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >Sair da lista: address@hidden
> >Banco Dados:   http://www.egroups.com/group/shell-script
> >
> >Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
> > http://br.yahoo.com/info/utos.html
>
> ___________________________________________________________
>
> http://www.zipmail.com.br O e-mail que vai aonde você está.
>
>
>
>
> Sair da lista: address@hidden
> Banco Dados:   http://www.egroups.com/group/shell-script
>
> Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
> http://br.yahoo.com/info/utos.html

-- 
-------------------------------------------------
Renato Alvim - membro da Brasil Soka Gakkai
-------------------------------------------------

Sair da lista: address@hidden
Banco Dados:   http://www.egroups.com/group/shell-script 

Seu uso do Yahoo! Grupos é sujeito aos Termos do Serviço Yahoo!. 




Sair da lista: address@hidden
Banco Dados:   http://www.egroups.com/group/shell-script 

Seu uso do Yahoo! Grupos é sujeito às regras descritas em: 
http://br.yahoo.com/info/utos.html 








reply via email to

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