A menudo escribo scripts de shell KSH que siguen el mismo patrón:
- (1) recuperar la salida de uno o más comandos
- (2) formatee con grep | cut | awk | sed e imprímalo en la pantalla o en un archivo
Para hacer eso, a menudo almaceno la salida de (1) en un archivo temporal, y luego hago el formato en (2) en ese archivo.
Tome ese código por ejemplo:
TMPFILE=file.tmp
# If tmpfile exists rm it.
[ -f $TMPFILE ] && rm -f $TMPFILE
for SERVICE in $(myfunc); do
getInfo $SERVICE > $TMPFILE # Store raw output in the TMPFILE
# I retrieve the relevant data from the TMPFILE
SERV_NAME=$(head -1 $TMPFILE | sed -e 's/ $//')
SERV_HOSTNAME=$(grep HOSTNAME $TMPFILE | cut -d "=" -f2)
SERV_ARGS=$(grep Arguments $TMPFILE | cut -d ":" -f2)
print $SERV_NAME $SEP $SERV_HOSTNAME $SEP $SERV_ARGS
rm -f $TMPFILE #rm the TMPFILE in vue of next iteration
done
¿Hay alguna manera, usando tuberías, redirecciones y otras cosas, para evitar escribir un archivo en el disco cada vez?
Si ayuda, estoy usando ksh Versión M-11/16 / 88i
PATH
u otras variables de entorno o shell.TMPFILE
puede estar bien, peroTMPDIR
es especial, entonces, ¿realmente quieres caminar por la cuerda floja?