Bash脚本新手求助:读取.env变量并在Shell脚本中调用
实现方法
下面提供两种满足需求的方案,你可以根据习惯选择:
方案一:通过Python脚本读取环境变量
1. 编写Read_env.py脚本
创建该文件用于读取.env.development中的Python_env值并输出:
with open('.env.development', 'r') as f: for line in f: line = line.strip() # 跳过空行和注释行 if line and not line.startswith('#'): key, value = line.split('=', 1) if key == 'Python_env': print(value.strip()) exit()
2. 修改Master.sh脚本
在脚本中调用Python脚本获取变量值,替换原有的python命令:
# 调用Python脚本获取Python_env的值 PYTHON_CMD=$(python Read_env.py) # 使用获取到的命令执行uvicorn(替换成你的实际应用参数) $PYTHON_CMD -m uvicorn your_app:app --reload
方案二:直接用Bash解析.env文件(无需Python脚本)
直接在Master.sh中完成变量读取和命令替换,步骤更简洁:
# 从.env.development中提取Python_env的值 PYTHON_CMD=$(grep '^Python_env=' .env.development | cut -d '=' -f2) # 容错处理:如果未获取到变量则报错退出 if [ -z "$PYTHON_CMD" ]; then echo "错误:未在.env.development中找到Python_env变量" exit 1 fi # 执行uvicorn命令 $PYTHON_CMD -m uvicorn your_app:app --reload
注意事项
- 确保
.env.development中的变量格式正确,比如Python_env=python,不要有多余空格(如Python_env = python) - 如果你的系统中Python命令是
python3,需将方案一中的python Read_env.py改为python3 Read_env.py - 给
Master.sh添加执行权限:chmod +x Master.sh,之后可直接运行./Master.sh
内容的提问来源于stack exchange,提问作者Ayush Saxena
相关产品推荐
相关产品推荐

