スクリプト内でスクリプトを実行するとエラーが表示されますか?

スクリプト内でスクリプトを実行するとエラーが表示されますか?

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内部で実行するときに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

私の考えでは、2行の出力を取得するか(この場合は問題ありません)、どちらも取得できませんmy1.shmy2.sh

答え2

各スクリプトの上部に以下を配置してフィードバックをデバッグできます。

set -x

これをcliに直接入力することもでき、同じことを行います。完了したら、+xを設定して無効にすることを忘れないでください。

set +x

関連情報