2013-10-26 168 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,我现在可以调试仪表上我的脚本。希望这可以帮助某人。

相关问题