如何在Bash脚本中使用文本文件中的变量
解决无法读取配置文件中变量的问题
你当前的脚本只是把文件内容读取到了一个字符串变量里,并没有让Shell解析并加载这些变量定义,所以自然无法直接使用$Clusterabr这类变量。下面是两种可行的解决方法:
方法一:直接加载配置文件(推荐)
首先修正你的dev.txt文件格式,Shell变量定义要求=前后不能有空格,把文件里等号后面的空格去掉,修改后内容如下:
location="centralus" location_abr="cus" client_name="fair" client_name_prefix="f" resource_group_postfix="rg" project_name="OTOZ" environment_name="devtest" instance="04" Clusterabr="aks"
然后在脚本中使用source或.命令加载这个文件,文件里的变量会被当前Shell环境识别:
#!/bin/sh # 加载配置文件 source dev.txt # 直接使用变量 echo "$Clusterabr" echo "$location"
方法二:不修改原文件,动态处理格式
如果不想修改原文件,可以用sed去掉等号后面的空格,再通过eval让Shell解析变量定义:
#!/bin/sh # 处理配置文件格式并加载变量 eval "$(sed 's/=\s*/=/g' dev.txt)" # 验证变量是否可用 echo "$Clusterabr"
注意事项
- Shell变量定义的语法要求
=前后不能有空格,这是你原本无法加载变量的核心原因之一; - 使用
eval时要确保配置文件内容安全,避免包含恶意命令。
内容的提问来源于stack exchange,提问作者Muhammad_Bilal
相关产品推荐
相关产品推荐

