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.sh
。my2.sh
。
答え2
各スクリプトの上部に以下を配置してフィードバックをデバッグできます。
set -x
これをcliに直接入力することもでき、同じことを行います。完了したら、+xを設定して無効にすることを忘れないでください。
set +x