代码之家  ›  专栏  ›  技术社区  ›  User1

如何在Bash中动态创建.conf文件

  •  0
  • User1  · 技术社区  · 14 年前

    -F .

    我不希望管理与此脚本分离的.conf文件。有没有办法创建一个临时文档来使用.conf文件?

    我尝试了以下方法:

    echo setting=value|my_prog -F -

    但它不承认 -

    4 回复  |  直到 14 年前
        1
  •  4
  •   derobert    14 年前

    你可以试试 /dev/stdin 而不是 -

    您也可以使用here文档:

    my_prog -F /dev/stdin <<OPTS
    opt1 arg1
    opt2 arg2
    OPTS
    

    my_prog -F <(cat <<OPTS
    opt1 arg1
    opt2 arg2
    OPTS
    )
    
        2
  •  2
  •   User1    14 年前

    在写这个问题的时候,我想我会分享:

    exec 3< <(echo setting=value)
    my_prog -F /dev/fd/3
    

        3
  •  2
  •   Bart Sas    14 年前

    您可以使用进程替换:

    my_prog -F <(command-that-generates-config)
    

    哪里 command-that-generates-config 可能有点像 echo setting=value 或者是一个函数。

        4
  •  2
  •   Callie J    14 年前

    #!/bin/bash
    
    MYTMPFILE=/tmp/_myfilesettings.$$
    
    cat <<-! > $MYTMPFILE
        somekey=somevalue
        someotherkey=somevalue
    !
    my_prog -F $MYTMPFILE
    rm -f $MYTMPFILE
    

    它使用所谓的“here”文档,即“cat<<-!”之间的所有内容高达!被逐字读作stdin。其中的“-”基本上告诉shell删除所有前导标签。

    您可以使用任何东西作为“To here”标记,例如,这也可以工作:

    cat <<-EOF > somewhere
         stuff
         more stuff
    EOF