我经常编写遵循相同模式的KSH Shell脚本:
- (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
                  为了后代:被标记为与该unix.stackexchange.com/questions/63923/…重复的另一个问题包括一个涉及名为fifo管道的答案,也可以在此处使用(尽管它可能不是最佳选择)这种特殊情况)。
                
                
                  
                    —
                    goldilocks 2013年
                    
                  
                
              
                  @goldilocks:也许我们可以将两个问题合并为一个。我们可以联系主持人吗?
                
                
                  
                    —
                    rahmu 2013年
                    
                  
                
              
                  @rahmu:我标记了另一个问题。我想这取决于现在的力量……
                
                
                  
                    —
                    goldilocks 
                    
                  
                
              
PATH其他shell或环境变量。TMPFILE也许很好,但是TMPDIR很特殊,那么您真的要走那条绳索吗?