Linux下无需额外软件如何从yaml文件提取变量导出为环境变量
实现方案
你给出的file.yaml内容如下:
# input file.yaml conda_name: "test" user_name: "foo"
不需要安装额外依赖的最优实现如下:
单行直接生效命令
你可以直接使用兼容性更强的命令:
export $(grep '^user_name:' file.yaml | sed 's/.*: *"\?\([^"]*\)"\?$/user_name=\1/')
也可以基于你已完成的逻辑扩展,调整sed规则去除空格、引号即可:
export $(grep 'user_name:' file.yaml | sed -e 's/:/=/g' -e 's/[ "]//g')
效果验证
执行完成后运行如下命令验证变量是否导出成功:
echo $user_name
正常会输出foo
注意事项
grep加^匹配行首是为了避免匹配到yaml文件注释中的user_name字段,可靠性更高- 如果需要该环境变量永久生效,可将上述export命令写入你当前shell的配置文件(
~/.bashrc/~/.zshrc等),每次终端启动会自动加载 - 用到的grep、sed均为类Unix系统默认预装工具,无需额外安装依赖,完全符合你的要求
内容的提问来源于stack exchange,提问作者WenliL
相关产品推荐
相关产品推荐

