外部プログラム A があります。呼び出された外部プログラム A が出力 (stout) を表示しない場合に何らかのアクションを実行するスクリプトを作成したいと考えています。
これはbashまたはpythonでどのように可能ですか?
システムコールを実行し、その出力を後で使用できる変数に保存できる subprocess モジュールを使用できます。
#!/usr/bin/python
import subprocess as sub
ur_call = '<your system call here>'
p = sub.Popen(ur_call, stdout=sub.PIPE,stderr=sub.PIPE)
output, errors = p.communicate()
if len(output) == 0 and len(errors) == 0:
pass # Do something
Bash スクリプトでは、出力をファイルにリダイレクトできます。ファイルの長さがゼロの場合、出力はありません。
時々出力を与えるスクリプトが no.sh の場合、Python でこれを行うことができます:
import os
x = os.popen("./no.sh")
y = x.read()
if y:
print "Got output"