[shell]避免使用非必要的臨時文件

         在編寫 Shell 腳本時往往在不必要使用臨時文件的情況下使用了臨時文件。這不僅增加了而外的代碼編寫工作量(用於處理創建、讀取、和刪除臨時文件等),而且可能使腳本運行速度變慢(文件 I/O 畢竟不是快的操作)。

下面的例子中假設有個腳本的功能是往當前目錄下所有的.txt 文件中添加如下一行文本:

--End of file name--

清單 8.和清單 9.中的代碼分別顯示了在不必要使用臨時文件的情況下使用臨時文件的代碼和不需要使用臨時文件的代碼。

清單 8. 在不必要使用臨時文件的情況下使用臨時文件
#!/usr/bin/ksh

ls -lt *.txt | awk '{print $NF}' > tmp #將命令輸出重定向到臨時文件 tmp

cat tmp

typeset fileName

typeset lastLine

while read fileName #逐行讀取臨時文件中的每一行

do

 lastLine=`tail -1 "$fileName"`

 if [ ! "$lastLine" == "--End of $fileName--" ]; then

   echo "--End of $fileName--" >> $fileName

 fi

done <tmp #從臨時文件進行輸入重定向



rm tmp #刪除臨時文件
清單 9. 不使用臨時文件
#!/usr/bin/ksh

typeset fileName

typeset lastLine

for fileName in $(ls -lt *.txt | awk '{print $NF}')

do

 lastLine=`tail -1 "$fileName"`

 if [ ! "$lastLine" == "--End of $fileName--" ]; then

   echo "--End of $fileName--" >> $fileName

 fi

done

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章