Linux shell指令碼前面的執行個體是說明十進位和二進位的轉換,還以一個有關檔案迴圈的執行個體來結束這部分內容的學習。相信Linux shell指令碼的基礎學習的學習者應該能夠掌握一些簡單的Linux shell指令碼的編寫。
檔案迴圈程式
或許您是想將所有發出的郵件儲存到一個檔案中的人們中的一員,但是在過了幾個月以後,這個檔案可能會變得很大以至於使對該檔案的訪問速度變慢。下面的 指令碼rotatefile可
以解決這個問題。這個指令碼可以重新命名郵件儲存檔案(假設為outmail)為outmail.1,而對於 outmail.1就變成了outmail.2 等等等等...
#!/bin/sh# vim: set sw=4 ts=4 et:ver="0.1"help(){cat <rotatefile -- rotate the file nameUSAGE: rotatefile [-h] filenameOPTIONS: -h help textEXAMPLE: rotatefile outThis will e.g rename out.2 to out.3, out.1 to out.2, out to out.1and create an empty out-fileThe max number is 10version $verHELPexit 0}error(){echo "$1"exit 1}while [ -n "$1" ]; docase $1 in-h) help;shift 1;;--) break;;-*) echo "error: no such option $1. -h for help";exit 1;;*) break;;esacdone# input check:if [ -z "$1" ] ; thenerror "ERROR: you must specify a file, use -h for help"fifilen="$1"# rename any .1 , .2 etc file:for n in 9 8 7 6 5 4 3 2 1; doif [ -f "$filen.$n" ]; thenp=`expr $n + 1`echo "mv $filen.$n $filen.$p"mv $filen.$n $filen.$pfidone# rename the original file:if [ -f "$filen" ]; thenecho "mv $filen $filen.1"mv $filen $filen.1fiecho touch $filentouch $filen
這個指令碼是如何工作的呢?在檢測使用者提供了一個檔案名稱以後,我們進行一個9到1的迴圈。檔案9被命名為10,檔案8重新命名為9等等。迴圈完成之後,我們將原始檔案命名為檔案1
同時建立一個與原始檔案同名的空檔案。
調試
最簡單的調試命令當然是使用echo命令。您可以使用echo在任何懷疑出錯的地方列印任何變數值。這也是絕大多數的shell程式員要花費80%的時間來偵錯工具的原因。Shell程式的
好處在於不需要重新編譯,插入一個echo命令也不需要多少時間。
shell也有一個真實的偵錯模式。如果在指令碼"strangescript" 中有錯誤,您可以這樣來進行調試:
sh -x strangescript
這將執行該指令碼並顯示所有變數的值。
shell還有一個不需要執行指令碼只是檢查文法的模式。可以這樣使用:
sh -n your_script
這將返回所有語法錯誤
這裡Linux shell指令碼基礎學習就全部結束了。感謝大家的支援。
以上就是詳細介紹Linux shell指令碼基礎學習(八)的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!