[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]
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Pipe condicional,
Arkanon <=