如何在Python脚本中执行config.sh并读取bash变量x的值?
实现方法
首先,你的现有脚本如下:
x.sh
#!/bin/bash echo nir
config.sh
#!/bin/bash x=$(/home/nir/x.sh)
要在Python中读取config.sh里的变量x,核心是让bash先加载config.sh(用source命令,即.),再输出变量值,最后用Python捕获这个输出。修改后的script.py如下:
script.py
#!/usr/bin/env python3 import subprocess # 执行config.sh并读取变量x到y # 先source加载config.sh,再输出x的值 cmd_output = subprocess.run( ["bash", "-c", ". /home/nir/config.sh && echo $x"], capture_output=True, text=True ) y = cmd_output.stdout.strip() # 去除输出的换行符 print(y)
原理说明
直接执行config.sh只会在子shell中定义变量x,父进程(Python)无法获取。而用bash -c '. /home/nir/config.sh && echo $x'的方式,会让bash在同一个会话中加载config.sh,此时变量x生效,紧接着输出它的值,Python通过subprocess.run捕获这个输出,就能拿到变量值。
内容的提问来源于stack exchange,提问作者Nir
相关产品推荐
相关产品推荐

