
### 方法一:使用环境变量
最简单的方法是通过环境变量传递状态码。在Python脚本中,您可以将状态码写入环境变量,然后在Shell脚本中读取这个环境变量的值。
**Python脚本示例:**
python
#!/usr/bin/env python
import os
# 假设我们要返回的状态码是0
os.environ['STATUS_CODE'] = '0'
**Shell脚本示例:**
bash
#!/bin/bash
# 运行Docker容器并执行Python脚本
docker run -it --rm -v $(pwd):/app python:3.8 python /app/script.py
# 读取环境变量中的状态码
status_code=$STATUS_CODE
# 根据状态码进行后续处理
if [ "$status_code" -eq 0 ]; then
echo "Python脚本执行成功"
else
echo "Python脚本执行失败,状态码:$status_code"
fi
### 方法二:使用文件
另一种方法是将状态码写入一个文件中,然后在Shell脚本中读取这个文件。
**Python脚本示例:**
python
#!/usr/bin/env python
# 写入状态码到文件
with open('/tmp/status_code.txt', 'w') as f:
f.write('0')
**Shell脚本示例:**
bash
#!/bin/bash
# 运行Docker容器并执行Python脚本
docker run -it --rm -v $(pwd):/app python:3.8 python /app/script.py
# 读取文件中的状态码
status_code=$(cat /tmp/status_code.txt)
# 根据状态码进行后续处理
if [ "$status_code" -eq 0 ]; then
echo "Python脚本执行成功"
else
echo "Python脚本执行失败,状态码:$status_code"
fi
### 方法三:使用Docker的退出码
Docker容器的退出码可以被Shell脚本捕获。当Python脚本执行完毕后,您可以在Shell脚本中检查Docker容器的退出码。
**Python脚本示例:**
python
#!/usr/bin/env python
# 退出码为0表示成功
exit(0)
**Shell脚本示例:**
bash
#!/bin/bash
# 运行Docker容器并执行Python脚本
docker run -it --rm -v $(pwd):/app python:3.8 python /app/script.py
# 检查Docker容器的退出码
docker_exit_code=$?
# 根据退出码进行后续处理
if [ "$docker_exit_code" -eq 0 ]; then
echo "Python脚本执行成功"
else
echo "Python脚本执行失败,退出码:$docker_exit_code"
fi
### 结论
以上三种方法都可以实现Shell脚本与Docker内Python脚本之间的状态码传递。您可以根据实际情况选择最适合您的方法。通过这些方法,您可以确保Shell脚本能够根据Python脚本的执行结果进行正确的处理。
更多文章请关注《万象专栏》
转载请注明出处:https://www.wanxiangsucai.com/read/cv182865