首页 > 解决方案 > 基于 $ 的错误输出?bash 中的值

问题描述

我有一个 python 脚本test.py包含以下内容:

import sys

def dosomething():
   a=1
   b=1
   if a == b:
      sys.exit(1)

if __name__ == "__main__":
   dosomething()

以及一个包含以下内容的 bash 脚本:

python test.py
echo $?

if [ $? -eq 0 ];
then
    echo "Success"
else
    echo "Failed"
fi

$ 的回声值?是 1,由 python 脚本 sys.exit(1) 中的条件设置。但是,为什么我的 bash 输出是:

Success

而不是“失败”?不是美元吗?-eq 0 是假的吗?

标签: pythonbash

解决方案


因为第二个$?是指echo $?命令的状态码。

如果要多次使用状态返回,请将其保存在 shell 变量中:

python test.py
status=$?

推荐阅读