【问题标题】:Read values from configuration file and use in shell script从配置文件中读取值并在 shell 脚本中使用
【发布时间】:2013-09-13 15:22:55
【问题描述】:

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

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

KEY3=VALUE3  ## COMMENT

## COMMENT

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

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

echo $KEY1 

【问题讨论】:

    标签: shell config


    【解决方案1】:

    只是:

    source config.file
    

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

    【讨论】:

    • 只是为了好奇,是否可以从配置文件中动态找到键名。换句话说,'不需要在脚本中检查关键字来检索值或执行操作。只需要在脚本中一一检索一个键的值。
    【解决方案2】:

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

    email=test@test.com
    user=test
    password=test
    

    有两种方式:

    1. 使用源代码来做。

      source $<your_file_path>
      echo $email
      
    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
      

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

    【讨论】:

      【解决方案3】:

      只需在代码开头提供代码即可:

      . file
      

      或

      source file
      

      【讨论】:

      • 只是为了好奇,是否可以从配置文件中动态找到键名。换句话说,不需要在脚本中检查关键字来检索值或执行操作。只需要在脚本中一一检索一个键的值.
      • 是的,您可以在 while 循环中执行此操作。我建议你Ask a question 看看有很多不同的方法。
      • 在执行此操作时要小心,您的配置文件实际上使用 shell 语法来处理空格等内容。例如,s1="foo bar" 行将起作用,但s2=foo bar 行将失败,因为 shell 会将其解释为运行程序 bar 的请求,并在环境中设置了 s2=foo。
      • @CurtSampson 好一个!在here 中查看所有可能的组合:)
      猜你喜欢
      • 2011-08-24
      • 1970-01-01
      • 1970-01-01
      • 2017-09-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-26
      • 2021-08-31
      • 1970-01-01
      相关资源
      最近更新 更多