2012-12-03 18 views
10

を実行しています事。 単純化Linuxのbashスクリプト私は2つのPythonスクリプトはa.pyと をb.py持っていると私はa.pyロードしa.pyが、それはだやって完了するまでb.py実行されませんbashスクリプトを書きたい複数のpython

#!/usr/bin/env bash 
python a.py 
python b.py 

が、これはナイーブで、a.pyが行われているかどうかを確認するためのチェック...私はそれをどのように行うのですか?デフォルトで

+2

これは自然な動作で、同期実行です。それ以外の場合(バックグラウンドでaを実行してすぐにbを開始するには)、アンパサンド&をコマンドに追加する必要があります。 'python a.py&'。 –

答えて

23

これはすでに次々に実行されます。あなたが行うことができます


python a.pypython b.pyを実行するために必要な条件として、正常に完了したことを確認するには、:

#!/usr/bin/env bash 
python a.py && python b.py 

python a.pyを実行し、ONLY「のpython bを実行しようとする試み。PY」python a.pyが正常に終了しなかった場合:

#!/usr/bin/env bash 
python a.py || python b.py 

をバックグラウンド・プロセスと同時に、それらを実行するには:

#!/usr/bin/env bash 
python a.py & 
python b.py & 

(コメントへの対応) - あなたをすることができますチェーン、このたとえば、次のような複数のコマンドを入力します。

python a.py && python b.py && python c.py && python d.py 
+0

これは2つ以上の場合がありますか?私もc.py、 'code' python a.py && python b.py && python c.py' code'、あるいはc.pyの別の行を別にしなければならないのでしょうか?最初の 'code' python a.py && python b.py'code'' 'code'python b.py && python c.py'code' – StudentOfScience

+0

@StudentOfScienceあなたは=できます)更新された回答が表示されます –

+0

&&を使用するとエラーが発生します./bash.sh:47行目:b.py:コマンドが見つかりませんでしたが、もしpython b.py fineを持っていればb.pyを実行します:( – StudentOfScience

1
prompt_err() { 

echo -e "\E[31m[ERROR]\E[m"

}

prompt_ok() {

echo -e "\E[32m[OK]\E[m"

}

status() {

if [ $1 -eq 0 ]; then

prompt_ok

elseprompt_err

exit -1

fi

}

あなたは上記のチェックコードを使用することができますa.py

status

b.py

'a.py'が完了すると 'b.py'が処理され、それ以外の場合は 'エラー'が表示されて終了します。

+0

これも動作し、私はThxを試しました! – StudentOfScience

+0

大歓迎!さらに詳しい情報はhttp://gettechgo.wordpress.com/2012/12/05/exit-status-shell-scripts/をご覧ください。 –

+0

@MansabUppalあなたは自分のウェブサイトにリンクするたびに必ず開示する必要があります。 –

関連する問題