从配置文件中读取值并在shell脚本中使用
我有一个文本配置文件,如下所示:从配置文件中读取值并在shell脚本中使用,shell,config,Shell,Config,我有一个文本配置文件,如下所示: ## COMMENT KEY1=VALUE1 ## COMMENT KEY2=VALUE2 KEY3=VALUE3 ## COMMENT ## COMMENT 如您所见,它有键值对,但也包含注释行和空行。在某些情况下,注释与键值对位于同一行 如何读取此配置文件并将键设置为shell脚本中的变量名,以便将其用作: echo $KEY1 只需在代码开头编写代码: . file 或 只是: 然后可以在shell中使用这些变量。例如,下面是配置文件的内容
## COMMENT
KEY1=VALUE1 ## COMMENT
KEY2=VALUE2
KEY3=VALUE3 ## COMMENT
## COMMENT
如您所见,它有键值对,但也包含注释行和空行。在某些情况下,注释与键值对位于同一行
如何读取此配置文件并将键设置为shell脚本中的变量名,以便将其用作:
echo $KEY1
只需在代码开头编写代码:
. file
或
只是:
然后可以在shell中使用这些变量。例如,下面是配置文件的内容:
email=test@test.com
user=test
password=test
有两种方法:
源代码$
echo$电子邮件
cat$|读取行时
做
如果[[$line==*“email”*];然后
如果s='-'读取-myarray只是出于好奇,那么是否可以从配置文件中动态查找密钥名。换句话说,“不需要在脚本中检查关键字来检索值或执行操作。只需在脚本中逐个检索键的值即可。出于好奇,是否可以从配置文件中动态查找键名。换句话说,不需要在脚本中检查关键字来检索值或执行操作。只需在脚本中逐个检索键的值。是的,您可以在while
循环中执行此操作。我建议您查看许多不同的方法,在执行此操作时要小心,因为您的配置文件实际上使用shell语法来处理诸如空格之类的内容。例如,行s1=“foo-bar”
将工作,但行s2=foo-bar
将失败,因为shell将其解释为在环境中设置s2=foo
运行程序的请求。@CurtSampson很好!请参阅本页上所有可能的组合:)
source config.file
email=test@test.com
user=test
password=test
source $<your_file_path>
echo $email
cat $<your_file_path> | while read line
do
if [[$line == *"email"*]]; then
IFS='-' read -a myarray <<< "$line"
email=${myarray[1]}
echo $email
fi
done