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

在shell脚本中禁止输出到屏幕,shell,unix,awk,ksh,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 我测试了一下,它拧得很好。 但是它把输出给屏幕,我不需要输出到屏幕。 我只需要制作的最后一个文件$

嗨 我写了一个小脚本:

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


怎么可能呢?

将脚本主体用大括号括起来,并重定向到/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}\u changed
${i}\u 353
。这就是为什么输出不会发送到文件…您的变量
${i_changed}
${i_353}
没有初始化,因此重定向不会命名文件