在编写 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