等待python脚本返回0

时间:2016-07-25 12:55:24

标签: python sh

我正在尝试编写一个等待数据库联机的脚本。 检查数据库连接的脚本是用python编写的,应该每隔5秒激活一次。如果脚本返回0,则主脚本应该继续。

我从来没有写过shell,所以我只能猜测如何让python脚本进入while循环的条件。这是我的尝试,但我不知道如何做对。

python脚本运行良好。

psqltest.py:

#!/usr/bin/python2.4
#
import psycopg2
try:
    db = psycopg2.connect("dbname='postgis' user='postgres' host='db' password='postgres'")
except:
    exit(1)

exit(0)

我的主shell脚本:

echo waiting for database...
while  [ python /root/psqltest.py && echo 0 || echo 1 ]
  do
     sleep 5
  done

错误消息:

 1 ]

感谢您帮助我

2 个答案:

答案 0 :(得分:2)

shell脚本只是

while ! python /root/psqltest.py; do
    sleep 5
done

或鲜为人知的

until python /root/psqltest.py; do
    sleep 5
done

答案 1 :(得分:0)

我已经改进了我的脚本,现在bash只调用python脚本并等待它完成,正如Kristof提到的那样。到目前为止这是有效的,但我试图进一步改进它。

#!/usr/bin/python3
#
import psycopg2
import time
import sys

db = None
sys.stdout.write('waiting ')
while db is None:
  try:
      db = psycopg2.connect("dbname='postgis' user='postgres' host='db' password='...'")
      db.close()
  except:
      sys.stdout.write('.')
  sys.stdout.flush()
  time.sleep( 5 )
print('')
exit(0)