導讀 | 腳本是存儲在一個文件的一系列命令。在終端上輸入一個個命令,按順序執行的方法太弱了,使用腳本,系統中的用戶能夠在一個文件中存儲全部命令,反覆調用該文件屢次從新執行命令。 |
在學習腳本或寫腳本的初期階段,咱們一般從寫小腳本或者幾行命令的短腳本開始,調試這樣的腳本時咱們一般無非就是經過觀察它們的輸出來確保其正常工做。html
然而,當咱們開始寫很是長或上千行命令的高級腳本,例如改變系統設置的腳本,在網絡上執行關鍵備份 等等,咱們會意識到僅僅看腳本輸出是不足以在腳本中找到 Bug 的!linux
所以,在 Linux 系列中這篇介紹 Shell 腳本調試, 咱們將看看如何啓用 Shell 腳本調試,而後在以後的系列中解釋不一樣的 Shell 腳本調試模式以及如何使用它們。shell
如何開始寫一個腳本bash
一個腳本與其它文件的區別是它的首行,它包含 #!(She-Bang - 釋伴:定義文件類型)和路徑名(解釋器路徑),通知系統該文件是一個命令集合,將被指定程序(解釋器)解釋。網絡
下面是不一樣類型腳本首行示例:函數
#!/bin/sh [sh 腳本] #!/bin/bash [bash 腳本] #!/usr/bin/perl [perl 程序] #!/bin/awk -f [awk 腳本]
注意:若是腳本僅包含一組標準系統命令,沒有任何內部 Shell 指令,首行或#!能夠去掉。學習
如何在 Linux 操做系統執行 Shell 腳本操作系統
調用一個腳本腳本的常規語法是:調試
$ 腳本名 參數1 ... 參數N
另外一種可能的形式是明確指定將執行這個腳本的 Shell,以下:htm
$ shell 腳本名 參數1 ... 參數N
示例:
$ /bin/bash 參數1 ... 參數N [bash 腳本] $ /bin/ksh 參數1 ... 參數N [ksh 腳本] $ /bin/sh 參數1 ... 參數N [sh 腳本]
對於沒有 #!做爲首行,僅包含基礎系統命令的腳本,示例以下:
### 腳本僅包含標準系統命令 cd /home/$USER mkdir tmp echo "tmp directory created under /home/$USER"
使它可執行並運行,以下:
$ chmod +x 腳本名 $ ./腳本名
啓用 Shell 腳本調試模式的方法
下面是主要的 Shell 腳本調試選項:
一、 改變 Shell 腳本首行
第一個機制是改變 Shell 腳本首行,以下,這會啓動腳本調試。
#!/bin/sh 選項
其中, 選項能夠是上面提到的一個或多個調試選項。
二、 調用 Shell 調試選項
第二個是使用以下調試選項啓動 Shell,這個方法也會打開整個腳本調試。
$ shell 選項 參數1 ... 參數N
示例:
$ /bin/bash 選項 參數1 ... 參數N
三、 使用 Shell 內置命令 set
第三個方法是使用內置命令set 去調試一個給定的 Shell 腳本部分,如一個函數。這個機制是重要的,由於它讓咱們能夠去調試任何一段 Shell 腳本。
咱們能夠以下使用 set命令打開調試模式,其中選項是以前提到的全部調試選項。
$ set 選項
啓用調試模式:
$ set -選項
禁用調試模式:
$ set +選項
此外,若是咱們在 Shell 腳本不一樣部分啓用了幾個調試模式,咱們能夠一次禁用全部調試模式,以下:
$ set -
關於啓用 Shell 腳本調試模式,先講這些。正如咱們看到的,咱們能夠調試一整個 Shell 腳本或者特定部分腳本。
在此係列下面的兩篇文章中,咱們會舉例介紹如何使用 Shell 腳本調試選項,進一步瞭解詳細、語法檢查、跟蹤調試模式。
更重要的是,關於這個指南,歡迎經過下面評論提出任何問題或反饋。