Shell 破折号-x失败,替换错误错误

Shell 破折号-x失败,替换错误错误,shell,dash-shell,Shell,Dash Shell,我正在尝试学习如何编写可移植的shell脚本,为此,我开始将我的个人实用程序从bash迁移到sh(我的系统上的dash)。但是,当我尝试在调试模式下运行脚本时,在所有情况下都会遇到一个错误$dash-x script 例如,在此脚本上: #!/bin/sh echo hi 如果我以:$dash script的形式运行它,我会得到“hi”字符串,但是如果我以:$dash-x script的形式运行它,或者在echo之前添加set-x命令: #!/bin/sh set -x echo hi 它失

我正在尝试学习如何编写可移植的shell脚本,为此,我开始将我的个人实用程序从bash迁移到sh(我的系统上的dash)。但是,当我尝试在调试模式下运行脚本时,在所有情况下都会遇到一个错误
$dash-x script

例如,在此脚本上:

#!/bin/sh
echo hi
如果我以:
$dash script
的形式运行它,我会得到“hi”字符串,但是如果我以:
$dash-x script
的形式运行它,或者在echo之前添加
set-x
命令:

#!/bin/sh
set -x
echo hi
它失败并出现以下错误:

script.sh:3:script.sh:替换错误


这使得调试脚本非常困难。我正在运行ubuntu12.04和dash0.5.7-2ubuntu2

当我写完我的问题时,我意识到我使用的是个性化的PS4(在xtrace模式下使用),我的PS4被定义为:

>>(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }
我临时更改为PS4=“>>”,一切正常,现在我可以在dash上调试脚本了。希望这对别人有帮助

可能重复的