能否在Bash中加载文件内容为变量?跨脚本导入变量实现方法
如何在Bash中加载配置文件内容为变量并实现类似Python的导入功能
没问题,这两个需求在Bash里都能轻松实现,我结合你给的示例一步步说明:
一、将文件内容加载为Bash变量
假设你的配置文件config.conf内容如下(调整为每行一个键值对更易处理):
server = xxxx
port = 8080
user = admin
方法1:预处理后使用source(推荐规范格式)
Bash的变量赋值要求等号前后不能有空格,所以如果把配置文件改成标准的Bash赋值格式:
server=xxxx
port=8080
user=admin
那直接在终端或脚本里运行:
source config.conf # 或者等价的简化写法:. config.conf
执行后就能直接使用$server、$port这些变量了,比如输入echo "Hi $server"就会输出Hi xxxx。
方法2:循环读取并处理带空格的配置
如果不想修改原配置文件的格式(保留key = value的空格),可以用循环逐行读取并处理空格:
while IFS='=' read -r key value; do # 去掉键和值前后的多余空格 key=$(echo "$key" | xargs) value=$(echo "$value" | xargs) # 将键值对赋值为变量(加export可让子进程也能访问) export "$key"="$value" done < config.conf
执行这段代码后,同样可以直接调用$server等变量。
二、在另一Bash脚本中导入配置(类似Python的import)
实现逻辑和终端里的操作一致,只需要在目标脚本中加入加载配置文件的命令即可。
比如你的脚本script.sh内容如下:
# 加载同目录下的配置文件(路径根据实际存放位置调整) . ./config.conf # 或者用 source ./config.conf # 现在就可以像使用本地变量一样调用配置里的内容了 echo "Hi $server" echo "Listening on port $port" echo "Logged in as $user"
运行脚本时,直接执行:
bash script.sh
就能看到输出包含配置文件里的变量值了。
注意事项
- 如果配置文件和脚本不在同一目录,要使用绝对路径或者正确的相对路径(比如
/home/yourname/config.conf)。 - 确保配置文件来源安全,因为
source会直接执行文件中的所有命令,和Python的import一样,要信任你导入的文件。
内容的提问来源于stack exchange,提问作者Rajesh Reddy B
相关产品推荐
相关产品推荐

