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

[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-----


reply via email to

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