从配置文件中读取值并在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