以前にBashで成功(または失敗)した場合は、コマンドを実行してください。

以前にBashで成功(または失敗)した場合は、コマンドを実行してください。

マニュアルを読んでフォローしてください。この回答、簡単な例をテストしたいと思います。

test_1.sh

#!/usr/bin/bash

let x=1/0
echo $x

test_2.sh

#!/usr/bin/bash

printf "\nThis is 2\n"

ただし、両方の制御フローの実装は失敗します。 test_1を実行し、失敗した場合はtest_2を実行します。

# Just errors on line 1 of course
./test_1.sh 
if [ $? -ne 0 ]; then
    ./test_2.sh
fi

また失敗します:

./test_1.sh || ./test_2.sh

複数のスクリプト間の流れを制御する方法についてのヒントはありますか?

ベストアンサー1

あなたのコメントに基づいて:

test_1.sh成功(戻りコード0)または失敗(ゼロ以外のすべて)を引き起こす可能性があるこのようなプロシージャがあります。私はこのようなものがtest_2.sh前者の場合にのみ実行したいと思います。

質問のスニペットとは反対の内容が欲しい。

./test_1.sh
if [ $? -ne 0 ]; then
    ./test_2.sh
fi

test_2.sh失敗するように指示されたら実行しますtest_1.sh

./test_1.sh || ./test_2.sh 

test_2.sh成功を示す場合に実行するには、test_1.sh次のいずれかが機能します。

./test_1.sh
if [ $? -eq 0 ]; then
    ./test_2.sh
fi
if ./test_1.sh; then
    ./test_2.sh
fi
./test_1.sh && ./test_2.sh

バラよりシェルの制御およびリダイレクト演算子は何ですか?もっと学ぶ。

test_1.shゼロで割っても、現在は常に成功を表します。バラよりゼロで除算を無視またはキャプチャします。もっと学ぶ。

おすすめ記事