我将问一问关于管道的结构,在圆括号中有with循环。
想象一下我有这样的剧本:
#!/bin/bash
<FirstCommand> | (while read var1; do out=`echo $var1 | <command>` \
<sth with $out> done; awk -v RS="" '{print $5,$18,$20}' OtherFile | awk 'NF==3{print}{}' | awk '{gsub (/<blank>/,""); print}' > file.txt \
while read var2 var3 var4; do <sth> done < file.txt)关键是我的脚本工作正常,直到第一个结束,而循环。但第二个有问题。
我的问题是:
我的FirstCommand的输出是否同时重定向到这两个while循环?
关于FirstCommand
这是一个生成一些文本的命令,我希望将输出重定向到while循环运行时。
更新
的输出附加到OtheFile中,awk正在使用。
谢谢
发布于 2014-06-17 04:40:40
第一个命令的输出被发送到包含这两个循环的shell的输入。第一个循环消耗所有数据。第二个循环的输入是文件file.txt ( awk的输出)。除非这里没有显示原因,否则最好将awk直接输送到第二个while循环。)
发布于 2014-06-17 05:10:33
试着做些像
<FirstCommand> | tee FirstCommand.output | (while read var1; do out=`echo $var1 |<command>` <sth with $out> done; awk -v RS="" '{print $5,$18,$20}' $NmapOut | awk 'NF==3{print}{}' | awk '{gsub (/<blank>/,""); print}' > file.txt; cat FirstCommand.output | while read var2; do <sth> done < file.txt)其中FirstCommand.output是一个临时文件,它将包含<FirstCommand>的输出。
https://stackoverflow.com/questions/24255790
复制相似问题