Shell 破折号-x失败,替换错误错误
我正在尝试学习如何编写可移植的shell脚本,为此,我开始将我的个人实用程序从bash迁移到sh(我的系统上的dash)。但是,当我尝试在调试模式下运行脚本时,在所有情况下都会遇到一个错误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 它失
$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上调试脚本了。希望这对别人有帮助 可能重复的