在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}
没有初始化,因此重定向不会命名文件