在bash脚本中捕获Python脚本的输出

我有一个监视游戏服务器的脚本。 它是用bash写的。 不过,我试图把高级监视器放在一起,如果服务器已经locking了。 这需要一个小的python脚本来查询服务器,并返回OK,ERROR 1或ERROR 2.捕获输出的最好方法是什么? 目前与脚本variables是空的。 我可以确认脚本运行正常并返回消息。

if [ -f serverquery.py ];then echo -e "[\e[0;36m INFO\e[0;39m ] Running advanced monitoring serverquery.py" echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Running advanced monitoring serverquery.py" >> ${logfile} serverquery=`./serverquery.py 127.0.0.1 27015` if [ "${serverquery}" = "ERROR 1" ];then echo -e "[\e[0;31m FAIL\e[0;39m ] ${servicename}: serverquery.py Monitor detected ${servername} has crashed!" echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py Monitor detected ${servername} has crashed!" >> ${logfile} fn_restartserver elif [ "${serverquery}" = "ERROR 2" ];then echo -e "[\e[0;31m FAIL\e[0;39m ] ${servicename}: serverquery.py Monitor detected ${servername} has crashed!" echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py Monitor detected ${servername} has crashed!" >> ${logfile} fn_restartserver fi fi 

谢谢

添加2>&1到最后,现在正在工作

例如

serverquery=$(./serverquery.py 127.0.0.1 27015 2>&1)

如果你有权限编辑serverquery.py,我会改变错误条件的退出值,然后检查$?的值$? 运行后。 如果不是,请尝试将输出检查的if条件更改为val0x00ff所build议的格式: if [[ "${serverquery}" == "ERROR 1" ]]; then ... fi if [[ "${serverquery}" == "ERROR 1" ]]; then ... fi