在脚本内执行脚本时是否可以看到错误?

在脚本内执行脚本时是否可以看到错误?

我有文件 my1.sh 和 my2.sh。

my1.sh:

.... do something
./my2.sh

my2.sh:

.... do something else

现在我的问题是,如果 my2.sh 中的任何命令(例如 ntfsclone)失败,我不会在屏幕上打印任何错误消息......无论我在 my2.sh 中尝试什么,都不会出现任何错误消息。

所以我的问题是我需要对 my2.sh 做什么才能在屏幕上显示其内容的错误消息?

答案1

再检查一遍。根据您在问题中所写的内容,当您./my2.sh从 inside执行时my1.sh,您没有将错误输出重定向到任何地方(使用2>somewhere),这意味着它将准确地保留在原来的位置。这意味着您绝对应该从与错误输出./my2.sh完全相同的位置获得错误输出./mh1.sh

要测试,请尝试将其插入my1.sh

echo "Test error output from my1.sh" >&2

并将其插入到以下内容的开头附近my2.sh

echo "Test error output from my2.sh" >&2

我的猜测是,您要么得到两行输出(在这种情况下没有问题),要么两者都没有(在这种情况下,您没有得到错误输出的原因是错误输出被重定向到其他地方,my1.sh并且与my2.sh)。

答案2

您可以尝试将以下内容放在每个脚本的顶部,以调试来自它们的反馈。

set -x

您也可以直接在 cli 中输入此内容,它会执行相同的操作,只需记住在完成后设置 +x 即可禁用它。

set +x

相关内容