我有文件 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