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

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

Pipe condicional


From: Arkanon
Subject: Pipe condicional
Date: Tue, 30 Mar 2010 12:07:51 -0300

Ae, galera do s-hell.

Hoje me dei conta de algo que achei que valia a pena comentar.

Aperfeicoando meu SMIPS (Script Masterizador do ISO Personalizado do
Slackware :-p), eu cai num comando *do tipo*:

if [ condicao ]
then
  comando1 | comando2 | COMANDO_A | comando3 | comando4
else
  comando1 | comando2 | COMANDO_B | comando3 | comando4
fi

Normalmente, nos simplificariamos o comando acima usando:

[ condicao ] && comando1 | comando2 | COMANDO_A | comando3 | comando4 ||
comando1 | comando2 | COMANDO_B | comando3 | comando4

Mesmo essa segunda forma sendo mais "enxuta" que a primeira, considerando o
que os dois lados da condicao tem em comum, tudo sugere que deva ser
possivel simplificar mais um pouco...

Aí me ocorreu algo pela primeira vez: usar a caracteristica do shell de
transformar qualquer combinacao de comandos em um novo comando e por "em
evidencia" as partes em comum do pipe usando parenteses:

comando1 | comando2 | ( [ condicao ] && COMANDO_A || COMANDO_B ) | comando3
| comando4

Um exemplo trivial seria:

$ echo "12" | ( true && cut -c1 || tr 2 3 )
1
$ echo "12" | ( false && cut -c1 || tr 2 3 )
13

Vem ao encontro do que andamos comentado aqui sobre scripts de uma linha
so... :-)

[]'s laconicos

-- 
(o_   ------------------     __o
//\   address@hidden   _`\<,
V_/_  --- www.lsd.org.br  (_)/(_)
---------------------------------


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



reply via email to

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