2014-09-22 64 views
0

當插值變量比方說,我有以下內容命名爲test.sh bash腳本:擊:使用-v

echo Dir: $PWD 

當我調用此腳本與-v開關,我可以看到正在執行的命令:

$ bash -v test.sh 
echo Dir: $PWD 
Dir: /Users/matt 

有什麼辦法讓它在執行命令前插入命令的變量嗎?我在尋找輸出更喜歡:

echo Dir: /Users/matt 
Dir: /Users/matt 
+1

你試過了:'bash -ex。/ test.sh' – anubhava 2014-09-22 20:57:23

+0

首先我已經看到了。請發帖作爲答案,我會很高興接受。 – 2014-09-22 21:28:09

回答

1
  1. 你可以硬編碼它到腳本。擾亂碼略在開始時:

    #!/bin/bash -ex 
    echo Dir: $PWD 
    

    然後執行它像./script.sh或與輸出將是:

    + echo Dir: /Users/matt 
    Dir: /Users/matt 
    
  2. 可以手動設置選項,如果你想使用-v

    #!/bin/bash 
    
    if [ $1 = -v ] ; then 
        set -ex 
    fi 
    
    echo Dir: $PWD 
    

    然後執行它像./script.sh和輸出將是:

    + echo Dir: /Users/matt 
    Dir: /Users/matt 
    
  3. 您可以按照anubhava的建議標記您的腳本,如bash -ex ./test.sh

注意:您可以在前面執行您的bash風格的命令,以上是我的偏好。


參考文獻:

http://tldp.org/LDP/abs/html/options.html

1

你要尋找的是bash -x

bash -x test.sh 
+ echo Dir: /Users/matt 
Dir: /Users/matt 

-x將以調試模式運行整個腳本。 在命令擴展之後但執行之前,每個命令的跟蹤及其參數將打印到標準輸出。