茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1672839 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_00002.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2016/10/16 8:38:37
12.6 shell script 的追蹤與 debug

scripts 在執行之前,最怕的就是出現語法錯誤的問題了!那麼我們如何 debug 呢?有沒有辦法不需要透過直接執行該 scripts 就可以來判斷是否有問題呢?呵呵!當然是有的!我們就直接以 bash 的相關參數來進行判斷吧!
[dmtsai@study ~]$ sh [-nvx] scripts.sh
選項與參數:
-n  :不要執行 script,僅查詢語法的問題;
-v  :再執行 sccript 前,先將 scripts 的內容輸出到螢幕上;
-x  :將使用到的 script 內容顯示到螢幕上,這是很有用的參數!

範例一:測試 dir_perm.sh 有無語法的問題?
[dmtsai@study ~]$ sh -n dir_perm.sh
# 若語法沒有問題,則不會顯示任何資訊!

範例二:將 show_animal.sh 的執行過程全部列出來~
[dmtsai@study ~]$ sh -x show_animal.sh
+ PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/root/bin
+ export PATH
+ for animal in dog cat elephant
+ echo 'There are dogs.... '
There are dogs....
+ for animal in dog cat elephant
+ echo 'There are cats.... '
There are cats....
+ for animal in dog cat elephant
+ echo 'There are elephants.... '
There are elephants....

請注意,上面範例二中執行的結果並不會有顏色的顯示!鳥哥為了方便說明所以在 + 號之後的資料都加上顏色了! 在輸出的訊息中,在加號後面的資料其實都是指令串,由於 sh -x 的方式來將指令執行過程也顯示出來, 如此使用者可以判斷程式碼執行到哪一段時會出現相關的資訊!這個功能非常的棒!透過顯示完整的指令串, 你就能夠依據輸出的錯誤資訊來訂正你的腳本了!

熟悉 sh 的用法,將可以使你在管理 Linux 的過程中得心應手!至於在 Shell scripts 的學習方法上面,需要『多看、多模仿、並加以修改成自己的樣式!』 是最快的學習手段了!網路上有相當多的朋友在開發一些相當有用的 scripts ,若是你可以將對方的 scripts 拿來,並且改成適合自己主機的樣子!那麼學習的效果會是最快的呢!

另外,我們 Linux 系統本來就有很多的服務啟動腳本,如果你想要知道每個 script 所代表的功能是什麼? 可以直接以 vim 進入該 script 去查閱一下,通常立刻就知道該 script 的目的了。 舉例來說,我們之前一直提到的 /etc/init.d/netconsole ,這個 script 是幹嘛用的? 利用 vim 去查閱最前面的幾行字,他出現如下資訊:
# netconsole    This loads the netconsole module with the configured parameters.
# chkconfig: - 50 50
# description: Initializes network console logging
# config: /etc/sysconfig/netconsole

意思是說,這個腳本在設定網路終端機來應付登入的意思,且設定檔在 /etc/sysconfig/netconsole 設定內! 所以,你寫的腳本如果也能夠很清楚的交待,那就太棒了!

另外,本章所有的範例都可以在 http://linux.vbird.org/linux_basic/0340bashshell-scripts/scripts-20150717.tar.bz2 裡頭找到喔!加油~

原文出處:鳥哥的 Linux 私房菜 -- 第十二章、學習 Shell Scripts
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|