Ich schreibe oft KSH-Shell-Skripte, die dem gleichen Muster folgen:
- (1) Abrufen der Ausgabe von einem oder mehreren Befehlen
- (2) Formatieren Sie es mit grep | cut | awk | sed und drucken Sie es auf dem Bildschirm oder in einer Datei aus
Zu diesem Zweck speichere ich häufig die Ausgabe von (1) in einer temporären Datei und formatiere sie dann in (2) für diese Datei.
Nehmen Sie diesen Code zum Beispiel:
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
Gibt es eine Möglichkeit, mithilfe von Pipes, Umleitungen und Dingsbums zu vermeiden, dass jedes Mal eine Datei auf die Festplatte geschrieben wird?
Wenn es hilft, verwende ich ksh Version M-11/16 / 88i
PATH
oder andere Shell- oder Umgebungsvariablen überlastet werden.TMPFILE
mag in Ordnung sein, ist aber etwasTMPDIR
Besonderes. Möchtest du wirklich diese Gratwanderung machen?