在編寫 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