2011-05-11 29 views
4

嗨 我寫了一個小腳本:抑制輸出到屏幕在shell腳本

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

我測試了它和它的wrking罰款。 但它是給屏幕輸出我不需要輸出到屏幕。 我只需要製作的最終文件$i_353

怎麼可能?

回答

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}未初始化,因此重定向不會命名文件。