嗨,我写了一个小脚本:
#!/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}
没有初始化,因此重定向不会命名文件。