【问题标题】:suppress the output to screen in shell script在 shell 脚本中抑制输出到屏幕
【发布时间】:2011-08-23 01:35:00
【问题描述】:

嗨 我写了一个小脚本:

#!/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

我测试了它,它的工作正常。 但它正在将输出提供给屏幕,我不需要输出到屏幕。 我只需要 $i_353

制作的最终文件

这怎么可能?

【问题讨论】:

    标签: shell unix awk ksh


    【解决方案1】:

    将脚本主体包裹在大括号中并重定向到 /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} 未初始化,因此重定向不会命名文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      • 2013-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多