You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Shell脚本中从类INI文件提取变量并直接赋值

从类INI配置文件提取变量并直接赋值到Shell脚本

简洁可行的核心方案

直接用eval执行过滤后的目标赋值语句,这是最简洁的实现方式:

eval "$(grep '^variable1=' your-config-file)"

执行后,当前Shell环境里的variable1就会被设为配置文件中对应的value1。

为什么之前的方法失效

你之前用cat file | grep variable1 | sh不生效,是因为sh会启动一个子Shell执行这条赋值语句,赋值仅在子Shell内部有效,父Shell(你的脚本)根本无法获取这个变量。

更严谨的进阶方案(避免误匹配)

如果配置文件里存在注释或包含variable1的其他无关行,用awk做更精确的提取:

eval "$(awk -F= '/^variable1=/{printf "%s=\"%s\"", $1, $2}' your-config-file)"

这个命令会严格匹配以variable1=开头的行,同时给值加上引号,避免值包含空格等特殊字符时出现异常。

安全提醒

注意:eval会执行任何传入的命令,因此必须确保你的配置文件是完全可信的,避免其中包含恶意代码(比如variable1=$(rm -rf /))。如果配置文件来源不可控,建议采用你之前了解的字符串处理方式显式赋值,虽然稍显繁琐但安全性更高。

内容的提问来源于stack exchange,提问作者Louis Nichols

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 07:18:26