2

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

例如,在这个脚本上:

#!/bin/sh
echo hi

如果我将它运行为: $ dash script,我会得到'hi'字符串,但是如果我将它运行为:$ dash -x script或者如果我set -x在 echo 之前添加命令:

#!/bin/sh
set -x
echo hi

它失败并出现错误:

script.sh:3:sc​​ript.sh:替换错误

这使得调试我的脚本变得非常困难。我正在运行带有破折号0.5.7-2ubuntu2的 ubuntu 12.04

4

1 回答 1

3

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

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

我暂时更改为 PS4=">>" 一切正常,我现在可以在 dash 上调试我的脚本。希望这可以帮助某人。

于 2013-10-26T06:40:21.953 回答