在shell脚本中禁止输出到屏幕

时间:2011-05-11 07:14:27

标签: shell unix awk ksh

您好 我写了一个小脚本:

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

的最终文件

怎么可能?

1 个答案:

答案 0 :(得分:6)

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