Linux中國

如何在 Linux 中啟用 Shell 腳本的調試模式

如何開始寫一個腳本

一個腳本與其它文件的區別是它的首行,它包含 #! (She-Bang - 釋伴:定義文件類型)和路徑名(解釋器路徑),通知系統該文件是一個命令集合,將被指定程序(解釋器)解釋。

下面是不同類型腳本 首行 示例:

#!/bin/sh          [sh 腳本]
#!/bin/bash        [bash 腳本] 
#!/usr/bin/perl    [perl 程序]
#!/bin/awk -f      [awk 腳本]   

注意:如果腳本僅包含一組標準系統命令,沒有任何內部 Shell 指令,首行或 #! 可以去掉。

如何在 Linux 操作系統執行 Shell 腳本

調用一個腳本腳本的常規語法是:

$ 腳本名  參數1 ... 參數N

另一種可能的形式是明確指定將執行這個腳本的 Shell,如下:

$ 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 腳本調試選項:

  • -v (verbose 的簡稱) - 告訴 Shell 讀取腳本時顯示所有行,激活詳細模式。
  • -n (noexec 或 no ecxecution 簡稱) - 指示 Shell 讀取所有命令然而不執行它們,這個選項激活語法檢查模式。
  • -x (xtrace 或 execution trace 簡稱) - 告訴 Shell 在終端顯示所有執行的命令和它們的參數。 這個選項是啟用 Shell 跟蹤模式。

1、 改變 Shell 腳本首行

第一個機制是改變 Shell 腳本首行,如下,這會啟動腳本調試

#!/bin/sh 選項

其中, 選項可以是上面提到的一個或多個調試選項。

2、 調用 Shell 調試選項

第二個是使用如下調試選項啟動 Shell,這個方法也會打開整個腳本調試。

$ shell 選項   參數1 ... 參數N

示例:

$ /bin/bash 選項   參數1 ... 參數N

3、 使用 Shell 內置命令 set

第三個方法是使用內置命令 set 去調試一個給定的 Shell 腳本部分,如一個函數。這個機制是重要的,因為它讓我們可以去調試任何一段 Shell 腳本。

我們可以如下使用 set 命令打開調試模式,其中選項是之前提到的所有調試選項。

$ set 選項 

啟用調試模式:

$ set -選項

禁用調試模式:

$ set +選項

此外,如果我們在 Shell 腳本不同部分啟用了幾個調試模式,我們可以一次禁用所有調試模式,如下:

$ set -

關於啟用 Shell 腳本調試模式,先講這些。正如我們看到的,我們可以調試一整個 Shell 腳本或者特定部分腳本。

在此系列下面的兩篇文章中,我們會舉例介紹如何使用 Shell 腳本調試選項,進一步了解 詳細 verbose 語法檢查 syntax checking 跟蹤 tracing 調試模式。

更重要的是,關於這個指南,歡迎通過下面評論提出任何問題或反饋。

via: http://www.tecmint.com/enable-shell-debug-mode-linux/

作者:Aaron Kili 譯者:imxieke 校對:jasminepeng

本文由 LCTT 組織編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國