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 //\ [email protected] _`\<, V_/_ --- www.lsd.org.br (_)/(_) --------------------------------- [As partes desta mensagem que não continham texto foram removidas]
