miércoles, marzo 07, 2007

Código ofuscado

Resulta que tenía que optimizar un script, cuando de repente me encuentro:
# Creamos el fichero temporal $ficheroDestino.
# Si ya existia, lo borramos para asegurarnos de que todo el contenido es nuevo.

if [ -f $rutaDestino ];
then
rm $rutaDestino
else
echo "" | tee $rutaDestino
fi

Y yo me pregunto:
1) ¿por qué si no existe lo creamos y porqué si existe lo borramos? ¿No sería más coherente, si lo borras, crearlo después?
Versión 1.1:
if [ -f $rutaDestino ];
then
rm $rutaDestino
fi
echo "" | tee $rutaDestino

2) ¿dónde ha visto "echo "" | tee $rutaDestino"? ¿Por qué la gente es tan enrevesada? ¿echo != echo ""? ¿| + tee != >?
Versión 1.2:
if [ -f $rutaDestino ];
then
rm $rutaDestino
fi
touch $rutaDestino


3) ¿Se puede ser más enrevesado aún? Probemos (se aceptan propuestas en los comentarios):
# Comprobamos si no existe el fichero y si existe dev null y escribimos fin de linea (con comillas-comillas ¿?¿?¿?)

( [ ! -f $rutaDestino ] && [ -c /dev/null ] && echo "" | tee $rutaDestino > /dev/null 2>&1 ) || ( [ -f $rutaDestino ] && [ -c /dev/null ] && rm $rutaDestino && echo "" | tee $rutaDestino > /dev/null 2>&1 )

4) ¿Los agujeros negros existen? ¿existe /dev/null?
Versión 2.0:
# Si existe el fichero lo vaciamos
# Si no existe el fichero, lo creamos vacio para asegurarnos que el contenido es nuevo

cat /dev/null > $rutaDestino


Redios... y estos tios desarrollan software.

2 comentarios:

Unknown dijo...

Incluso [LoKo] me acaba de dar una fórmula más corta aún:
echo > $rutaDestino

Gracias por la aportación ya que tu no puedes escribir comentarios por... ¿por algo? :P

XiR_ dijo...

xir@portable:~$ > lalala
xir@portable:~$ ls -l
total 1588
[...]
-rw-r--r-- 1 xir xir 0 2007-03-08 04:59 lalala

¡¡¡y funciona!!! aunque sospecho que va a ser poco portable... no sé