Я часто пишу сценарии оболочки KSH, которые следуют той же схеме:
- (1) получить вывод из одной или нескольких команд
- (2) отформатируйте его, используя grep | cut | awk | sed, и распечатайте его на экране или в файле
Для этого я часто сохраняю вывод (1) в временном файле, а затем выполняю форматирование в (2) для этого файла.
Возьмите этот код, например:
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
Есть ли способ, используя каналы, перенаправления и т. Д., Чтобы избежать записи файла на диск каждый раз?
Если это поможет, я использую ksh Версия M-11/16 / 88i
PATH
или другие переменные оболочки или среды.TMPFILE
может быть хорошо, ноTMPDIR
это особенное, так что вы действительно хотите идти по канату?