[gull] Truc et astuces: bash: jouons avec les variables et eval

Félix Hauri felix at f-hauri.ch
Sat Nov 5 19:02:56 CET 2011


:->>

On Sat, Nov 05, 2011 at 02:02:28PM +0100, Jean-Pierre Rupp wrote:
> Bon,
>
> Tu as là quelque chose qui ressemble un peu du obfuscated code.
Dois'je m'en offusquer?

> Peut-être tu pourras quelque chose de plus lisible avec Perl, mas ça ne  
> serait pas assez « fun » :-)
Surtout que, de mon point de vue, manipuler des variables en BASH, c'est
limite...

A partir d'un certain point, j'abandonne le shell pour le faire en perl,
bien plus pratique.

Mais tant qu'à le faire en shell, autant ``éviter'' perl, 
qui est tout de même plus lourd que sed.

Pour ce qui est de ``plus lisible'', cela se discute:

eval $(date +"$(date --help |
  perl -ne '/^\s+%([^ %]{1,4})\s/&&do{
	(my $vname=$1)=~y|:|_|;printf "DATE_%s=\"%%%s\" ",$vname,$1};')")

eval $(date +"$(date --help |
  sed -ne '/^  %[^ %]\{1,4\} .*$/{
	s/^ *%\([^ ]*\) .*$/DATE_\1=\"%\1\"/;:loop;/[^:%]:/{s/:/_/;tloop};p}')")

Bon, d'accord, c'est peut être un peu plus lisible en Perl, mais c'est 
égallement plus cher.

--
 Félix Hauri  -  <felix at f-hauri.ch>  -  http://www.f-hauri.ch


More information about the gull mailing list