我正在尝试学习如何编写可移植的shell脚本,为此我开始将我的个人实用程序从bash迁移到sh(在我的系统上冲刺)。但是,当我尝试在调试模式下运行脚本时,我遇到了一个错误$ dash -x script
例如,在这个脚本上:
#!/bin/sh
echo hi
如果我以:$ dash script
运行它,我会得到'hi'字符串,但是如果我运行它:$ dash -x script
或者我在echo之前添加set -x
命令: / p>
#!/bin/sh
set -x
echo hi
失败并显示错误:
script.sh:3:script.sh:错误替换
这使我的脚本调试非常困难。我正在运行ubuntu 12.04 ,短划线 0.5.7-2ubuntu2
答案 0 :(得分:3)
就在我写完问题的时候,我意识到我正在使用个性化的PS4(用于xtrace模式),我的PS4被定义为:
>>(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }
我暂时改为PS4 =“>>”一切顺利,我现在可以在破折号上调试我的脚本。希望这有助于某人。