2013-02-18 51 views
0

我嘗試瞭解下面的腳本調試框架。如何理解這個bash腳本調試框架?

#!/bin/bash 
_DEBUG="on" 
function DEBUG() 
{ 
[ "$_DEBUG" == "on" ] && [email protected] 
} 

DEBUG echo 'Reading files' 
for i in * 
do 
    grep 'something' $i > /dev/null 
    [ $? -eq 0 ] && echo "Found in $i file" 
done 
DEBUG set -x 
a=2 
b=3 
c=$(($a + $b)) 
DEBUG set +x 
echo "$a + $b = $c" 

我無法理解函數DEBUG及其用法。

我的問題是

(0)$ @是什麼意思? (1)DEBUG如何使用$ @回顯'正在讀取文件'的工作?

如何使用$

DEBUG set -x 
a=2 
b=3 
c=$(($a + $b)) 
DEBUG set +x 

工作(2)@? 非常感謝。

回答

0

$ @擴展傳遞給函數(或bash腳本本身)

例如,所有的參數。如果您致電DEBUG echo "test",特殊變量[email protected]將擴大到echo "test"

DEBUG功能只是檢查是否$_DEBUG變量設置爲"on"。如果是這樣,它將執行作爲參數傳遞的命令(存儲到[email protected]變量中)

set -x將使解釋器在執行之前打印每個命令,因此它將幫助您瞭解在任何時間點發生的事情。

set +x將恢復正常的行爲

+0

謝謝大家的回答。他們相當有幫助。 – Delvin 2013-02-18 10:52:47

0

(0)查看man bash[email protected]是所有位置參數的列表。

(1)DEBUG echo 'Reading files'調用具有兩個參數的調試,echoReading files。因此,echo Reading files是calles。

(2)set +x使得bash在執行時打印命令及其參數。與(1)相同,DEBUG與[email protected]一起使用。