在 bash 中回显时未显示系统退出返回值

问题描述

所以我写了一个 python 脚本 login_email.py 用“imaplib”和“email”模块阅读电子邮件。

import sys
import imaplib
import email

def login(user,pwd):
   mail = imaplib.IMAP4_SSL('imap.gmail.com')
   try:
      mail.login(user,pwd)
   except imaplib.IMAP4.error:
      sys.exit(1)

if __name__ == "__main__":
   mail_usr = "tester@gmail.com"
   mail_pwd = sys.argv[1] #password will be provided as an argument in the bash 
   login(mail_usr,mail_pwd)

我想模拟一个失败的登录过程,所以如果登录失败,sys.exit(1) 将被触发。 在我的 bash 脚本中:

function catch() {
    echo "Error"
}
trap 'catch $? $LINENO $BASH_COMMAND' ERR
set -e

password="12345"
python login_email.py $password
echo $?

但是,当我运行脚本时,我得到没有输出,正如我所期望的那样 $?为 1,因为我在 python 脚本中定义了 sys.exit(1)。出了什么问题?

编辑 我刚刚发现,我用来在出现任何脚本错误时中止脚本的“set -e”导致“$?”不可回声。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...