[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Dúvida
From: |
MrBiTs |
Subject: |
Re: [shell-script] Dúvida |
Date: |
Fri, 15 Jul 2011 06:52:37 -0300 |
User-agent: |
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.15) Gecko/20110303 Lightning/1.0b2 Thunderbird/3.1.9 |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
On 07/14/2011 21:47 , Alysson Gonçalves de Azevedo wrote:
> aproveitando a mão... eu entendi o comando, mas não para onde vão as
> informações retornadas...
> eu sei que se fizer no final lá echo $1 $2 $# vai sair o primeiro e o
> segundo "campo" do comando e por ultimo, a qtd de "campos"...
>
> mas aonde estão essas informações? em qual variável? pra buffers ou algo
> assim?
> e se possível, algum outro exemplo de uso, para eu entender melhor onde e
> como usar...
Sua primeira pergunta está mais para conhecimento de como funciona um SO, não é
? Todas as informações são trabalhadas em memória
(RAM, nã confundir com discos).
O comando set é capaz de separar um bloco de informações em diversas variáveis,
baseado no IFS. A grosso modo, quando você o
executa, o programa sabe que deve alocar áreas de memória e nomeá-las 1, 2, 3,
etc, verificar qual é o IFS (antes de perguntar o que
é, pesquise) e armazenar a informação "crua" nessas áreas alocadas. Depois,
quando você as acessa (echo $1), elas são recuperadas da
memória pelo programa echo, que sabe lê-las, e mostradas na saída padrão (ou em
outro lugar, em caso de redirecionamentos).
Onde usar ? Imagine ter o problema de "cortar" uma base de dados que contém
milhões de linhas assim:
1 1234567890 ABCDEFG HIJKLMNOPQ RSTU VWX YZ
Ao invés de fazer:
VAR1=$(echo 1 1234567890 ABCDEFG HIJKLMNOPQ RSTU VWX YZ | cut -d ' ' -f 1)
VAR2=$(echo 1 1234567890 ABCDEFG HIJKLMNOPQ RSTU VWX YZ | cut -d ' ' -f 2)
e assim até ter nossas 7 variáveis, você pode dizer algo como
set 1 1234567890 ABCDEFG HIJKLMNOPQ RSTU VWX YZ
e o comando set já criará para você as variáveis 1 a 7. Você economizou
programação, tempo de processamento, memória. Hoje, com o
poder computacional existente, as pessoas não dão mais atenção a esse tipo de
coisas, mas um script mal-feito pode congelar sua
máquina, não importa quanto de recurso ela tenha.
Um exemplo clássico é o nosso fork bomb :
:(){ :|:& };:
Execute isso e, a menos que seu sistema tenha os limites de usuário bem
configurados, ele irá congelar em segundos.
Para explicação do fork bomb,
http://www.dicas-l.com.br/cantinhodoshell/cantinhodoshell_20071111.php
- --
LLAP
.0. MrBiTs - address@hidden
..0 GnuPG -
http://keyserver.fug.com.br:11371/pks/lookup?op=get&search=0x6EC818FC2B3CA5AB
000 http://www.mrbits.com.br
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (Darwin)
iQEcBAEBCAAGBQJOIA3lAAoJEG7IGPwrPKWr5OUH/jaRzeYorfdBJuoASrIWKCTb
GHsD/u9efXt38knquGgJTAq3S1Dy0XyxudR5NAjav+YupufHWahY/cghhHa2cAW0
n5lIg3Muv6aqymEUbOnziU8S6UueKxxo0sS8ar4HqokbfXWGMlrLnN2Yq/lCPfUu
8smJYl92TO+DZiYPZ24/My2EXtfuXkeAQaVaScoSM8Q+ZIRFNGEl9fNZtr5b9Xgv
ECmSO8n6LPu97W3UbrOk72nDVL9jRalJwj/p+D157YUu6ynHWYmxpXTIovjN8PDc
ri0/g6TFhYZKVtmEEvR3g+43nXR8YEueAGCSPuQZ7NclwBxyjLqrtr6LphPJHbs=
=CZnq
-----END PGP SIGNATURE-----
- Dúvida, address@hidden, 2011/07/14