shell指令碼調試 — 作業記錄2

來源:互聯網
上載者:User
shell指令碼調試 -- 作業記錄1 本文主要描述如何輸出shell指令碼中的debug日誌. C/C++的debug日誌    在C/C++中有 __FILE__, __func__, __LINE__ 來表示 當前這行日誌來自哪個原始碼檔案的第幾行的哪個函數.如:
#include<stdio.h> 
/* t.c */

int main()
{
    printf("%s:%d:%s:DEBUG Hello World!\n", __FILE__, __LINE__, __func__);
    return
0;
}
/* 運行結果如下:
    $> make t
    cc t.c -o t
    $> ./t
    t.c:6:main:DEBUG Hello World!
    $> 

 */

t.c:6:main:DEBUG Hello World! 是在說, 這行資訊來至 t.c 檔案的第 6 行的 main 函數,這種方法可以讓你在調試過程中很快的定位問題的位置. shell指令碼中的debug日誌     使用 alias 功能, 實作類別似C/C++中的debug日誌方法. 將檔案儲存到 /etc/mydebug

#!/bin/bash 
# mydebug
# Aliases are not expanded when the shell is not interactive, unless the
#+ expand_aliases shell option is set using shopt
shopt -s expand_aliases

case
"$1" in
    "debug")
        alias mydebug='echo -n $(caller 0|tr " " ":"):$FUNCNAME:$LINENO:LOG:" "';
        ;;
    *)
        alias mydebug='';
        ;;
esac

 測試:
#!/bin/bash 
# mydebug_test.sh

source /etc/mydebug debug; #如果帶參數就是 debug 模式, 不帶任何參數為非debug模式.

function check_apache()
{
    echo
"$(mydebug)apache [OK]"; 
}

function check_mysql()
{
    echo
"$(mydebug)mysql [OK]"; 
}

function check_all()
{
    check_apache;
    check_mysql;
}

check_all;

 debug模式的運行結果:$> /bin/bash mydebug_test.sh

18:check_all:mydebug_test.sh:check_apache:8:LOG: apache [OK]

19:check_all:mydebug_test.sh:check_mysql:13:LOG: mysql [OK]$> 非debug模式的運行結果:$> /bin/bash mydebug_test.sh 

apache [OK]

mysql [OK] 

------------- end -------------
From: GS
-------------------------------



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.