在shell脚本中将输出压缩到屏幕上

嗨,我写了一个小脚本:

#!/usr/bin/ksh for i in *.DAT do awk 'BEGIN{OFS=FS=","}$3~/^353/{$3="353861958962"}{print}' $i >> $i_changed awk '$3~/^353/' $i_changed >> $i_353 rm -rf $i_changed done exit 

我testing了它,并且很好。 但它是输出到屏幕我不需要输出屏幕。 我只需要最后的文件是$i_353

这怎么可能?

用大括号包装脚本的主体并重定向到/ dev / null:

 #!/usr/bin/ksh { for i in *.DAT do awk 'BEGIN{OFS=FS=","}$3~/^353/{$3="353861958962"}{print}' $i >> $i_changed awk '$3~/^353/' $i_changed >> $i_353 rm -rf $i_changed done } >/dev/null 2>&1 

这也将错误发送到位桶。 这可能不是一个好主意, 如果你不想要的话,删除2>&1重定向。

另外: 要小心 – 您可能需要使用${i}_changed${i}_353 。 这就是为什么输出不去文件…变量${i_changed}${i_353}没有初始化,因此重定向不会命名文件。