从配置文件中读取值并在shell脚本中使用

use*_*717 6 shell config

我有一个像这样的文本配置文件:

## COMMENT
KEY1=VALUE1  ## COMMENT
KEY2=VALUE2

KEY3=VALUE3  ## COMMENT

## COMMENT
Run Code Online (Sandbox Code Playgroud)

如您所见,它具有键值对,但它也包含注释行和空行.在某些情况下,注释与键值对在同一行.

如何阅读此配置文件并将密钥设置为shell脚本中的变量名称,以便我可以将它们用作:

echo $KEY1 
Run Code Online (Sandbox Code Playgroud)

Ken*_*ent 11

只是:

source config.file
Run Code Online (Sandbox Code Playgroud)

那么你可以在shell中使用这些变量.


Hai*_*mei 6

例如,这里是您的配置文件的内容:

email=test@test.com
user=test
password=test
Run Code Online (Sandbox Code Playgroud)

有两种方式:

  1. 使用源来做到这一点。

    source $<your_file_path>
    echo $email
    
    Run Code Online (Sandbox Code Playgroud)
  2. 读取内容然后循环每一行进行比较以确定正确的行

    cat $<your_file_path> | while read line
    do 
      if [[$line == *"email"*]]; then
        IFS='-' read -a myarray <<< "$line"
        email=${myarray[1]}
        echo $email
      fi
    done
    
    Run Code Online (Sandbox Code Playgroud)

第二种解决方案的缺点是您需要使用 if 来检查每一行。


fed*_*qui 3

只需在代码开头获取代码即可:

. file
Run Code Online (Sandbox Code Playgroud)

或者

source file
Run Code Online (Sandbox Code Playgroud)