Costumo escrever scripts de shell KSH que seguem o mesmo padrão:
- (1) recuperar a saída de um ou mais comandos
- (2) formate-o usando grep | cut | awk | sed e imprima-o na tela ou em um arquivo
Para fazer isso, costumo armazenar a saída de (1) em um arquivo temporário e, em seguida, faço a formatação em (2) nesse arquivo.
Tome esse código, por exemplo:
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
Existe uma maneira, usando pipes, redirecionamentos e outras coisas, para evitar gravar um arquivo no disco a cada vez?
Se ajudar, estou usando a versão ksh M-11/16 / 88i
PATH
outras shell ou variáveis de ambiente.TMPFILE
pode ser bom, masTMPDIR
é especial, então você realmente quer andar nessa corda bamba?