2013-10-26 110 views
2

我正試圖學習如何編寫可移植的shell腳本,這樣做我開始將我的個人實用工具從bash遷移到sh(在我的系統中破折號)。然而,有一個錯誤,我得到在所有情況下,當我嘗試運行在調試模式下$ dash -x scriptDash -x失敗,錯誤替換錯誤

例如腳本,這個腳本:

#!/bin/sh 
echo hi 

如果我運行它爲:$ dash script,我得到「喜」字符串,但是如果我運行它爲:$ dash -x script或者如果我回音前添加set -x命令:

#!/bin/sh 
set -x 
echo hi 

它失敗,出現錯誤:

script.sh: 3: script.sh: Bad substitution

這使得調試我的腳本非常困難。我運行Ubuntu 12.04 幾許0.5.7-2ubuntu2

+0

[bash中的字符串替換 - 錯誤的替換錯誤]可能的重複(http://stackoverflow.com/questions/8960677/string-replacement-in-bash-bad-substitution-error) – kenorb

回答

3

僅僅通過我寫完我的問題,我意識到我使用的是個性化的PS4(在X跟蹤模式下使用)的時候,我是PS4定義爲:

>>(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): } 

我臨時改變爲PS4 =「>>」,一切都OK,我現在可以調試儀表上我的腳本。希望這可以幫助某人。

相關問題