【问题标题】:how to get value of variable config in bash? [duplicate]如何在bash中获取变量配置的值? [复制]
【发布时间】:2012-03-22 03:52:34
【问题描述】:

我有一个 linux 配置文件,格式如下:

VARIABLE=5753
VARIABLE2=""
....

我将如何获得 f.e. VARIABLE2 使用标准 linux 工具或正则表达式的值? (我需要从文件中解析目录路径)。提前致谢。

【问题讨论】:

  • 也许我不明白,但你为什么不写echo $VARIABLE2
  • 您不想获取整个文件?
  • 已经快 3 年了,所以我什至不记得了,但我想我找到了正确的答案。采购整个配置不是一个选项,我不打算执行“。”在可能不受信任/损坏的配置上,所以我选择了 perl 正则表达式匹配的东西,然后通过额外的正则过滤结果(在我的脚本中的变量中有一个 tmpdir 的可选名称,我不希望它是“~”或“/”之后会导致“rm -r ~”。

标签: regex linux bash


【解决方案1】:

您可以使用source(又名.)命令将文件中的所有变量加载到当前shell:

$ source myfile.config

现在您可以访问文件中定义的变量的值了:

$ echo $VARIABLE
5753

【讨论】:

    【解决方案2】:
    $> cat ./text 
    VARIABLE=5753
    VARIABLE2=""
    

    使用perl 正则表达式grep 可以使用lookbehind 运算符匹配这些值。

    $> grep --only-matching --perl-regex "(?<=VARIABLE2\=).*" ./text
    ""
    

    对于VARIABLE

    $> grep --only-matching --perl-regex "(?<=VARIABLE\=).*" ./text
    5753
    

    【讨论】:

      【解决方案3】:
      eval $(grep "^VARIABLE=" configfile)
      

      将选择该行并在当前 bash 上下文中对其进行评估,设置变量值。完成此操作后,您将拥有一个名为VARIABLE 的变量,其值为5753。如果配置文件中不存在这样的行,则不会发生任何事情。

      【讨论】:

        猜你喜欢
        • 2012-08-16
        • 1970-01-01
        • 1970-01-01
        • 2021-06-14
        • 1970-01-01
        • 2011-06-21
        • 2017-03-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多