在編寫 shell 指令碼時往往在不必要使用臨時檔案的情況下使用了臨時檔案。這不僅增加了而外的**編寫工作量(用於處理建立、讀取、和刪除臨時檔案等),而且可能使指令碼執行速度變慢(檔案 i/o 畢竟不是快的操作)。
下面的例子中假設有個指令碼的功能是往當前目錄下所有的.txt 檔案中新增如下一行文字:
--end of file name--
清單 8.和清單 9.中的**分別顯示了在不必要使用臨時檔案的情況下使用臨時檔案的**和不需要使用臨時檔案的**。
清單 8. 在不必要使用臨時檔案的情況下使用臨時檔案
#!/usr/bin/kshls -lt *.txt | awk '' > 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
fidone 清單 9. 不使用臨時檔案
#!/usr/bin/ksh
typeset filename
typeset lastline
for filename in $(ls -lt *.txt | awk '')
do lastline=`tail -1 "$filename"`
if [ ! "$lastline" == "--end of $filename--" ]; then
echo "--end of $filename--" >> $filename
fidone
除非必要,不要使用Linux訊號
除非必要,不要使用linux的訊號做任何事情。因為這套工具的使用非常容易出錯,對開發人員的基礎知識和經驗要求較高。除非必要,不要處理sigse 處理錯誤會導致程序段錯誤後進入處理段錯誤的死迴圈。除非必要,不要處理sigchld。處理錯誤會產生殭屍程序。除非必要,不要處理sigcont。systemd...
避免不必要的float
float中文翻譯為浮動,很形象的翻譯,在css很常用,當你需要吧兩個塊級元素定排放在同一高度上經常會用到float,先看一下float的 屬性。先看一下float可能的值 float left 元素向左浮動 float right 元素向右浮動 float none 不浮動 float inher...
避免不必要的物件
一般來說,最好能重用物件而不是在每次需要的時候就建立乙個相同功能的新物件。重用方式既快速,又流行。如果物件是不可變的,它就始終可以被重用。最為乙個極端的反面例子,考慮下面的語句 string s new string string don t do this 該語句每次被執行的時候都建立乙個新的st...