
### 方法一:使用环境变量
最简单的方法是通过环境变量传递状态码。在Python脚本中,你可以设置一个环境变量来存储状态码,然后在Shell脚本中读取这个环境变量。
**Python脚本示例:**
python
# python_script.py
import os
# 设置状态码
os.environ['STATUS_CODE'] = '0' # 假设0表示成功
**Shell脚本示例:**
bash
#!/bin/bash
# 运行Docker容器并执行Python脚本
docker run --rm -it -v $(pwd):/app python_image python python_script.py
# 读取环境变量
status_code=$(echo $STATUS_CODE)
# 根据状态码执行后续操作
if [ "$status_code" -eq 0 ]; then
echo "Python脚本执行成功。"
else
echo "Python脚本执行失败。"
fi
### 方法二:使用文件
另一种方法是将状态码写入一个文件中,然后在Shell脚本中读取这个文件。
**Python脚本示例:**
python
# python_script.py
with open('status_code.txt', 'w') as f:
f.write('0') # 写入状态码
**Shell脚本示例:**
bash
#!/bin/bash
# 运行Docker容器并执行Python脚本
docker run --rm -it -v $(pwd):/app python_image python python_script.py
# 读取状态码文件
status_code=$(cat status_code.txt)
# 根据状态码执行后续操作
if [ "$status_code" -eq 0 ]; then
echo "Python脚本执行成功。"
else
echo "Python脚本执行失败。"
fi
### 方法三:使用Docker的返回值
Docker容器可以返回一个退出状态码,这个状态码可以被Shell脚本捕获。
**Python脚本示例:**
python
# python_script.py
# 假设脚本执行成功
exit(0)
**Shell脚本示例:**
bash
#!/bin/bash
# 运行Docker容器并执行Python脚本
docker run --rm -it -v $(pwd):/app python_image python python_script.py
# 捕获Docker容器的退出状态码
status_code=$?
# 根据状态码执行后续操作
if [ "$status_code" -eq 0 ]; then
echo "Python脚本执行成功。"
else
echo "Python脚本执行失败。"
fi
### 结论
以上三种方法都可以实现Shell脚本调用Docker容器内的Python脚本并获取状态码。选择哪种方法取决于你的具体需求和偏好。环境变量和文件方法适用于需要传递更多信息的场景,而Docker的返回值方法则更为直接和简洁。在实际应用中,你可以根据任务的复杂性和需求来选择最合适的方法。
更多文章请关注《万象专栏》
转载请注明出处:https://www.wanxiangsucai.com/read/cv183471