【问题标题】:What is the best way to set specific pattern format and changing just data设置特定模式格式并仅更改数据的最佳方法是什么
【发布时间】:2017-10-07 15:05:14
【问题描述】:

假设我的文件中有很多这样的条目:

first_db:
  <<: *default
  database: first_db

second_db:
  <<: *default
  database: second_db

在 bash 脚本中以固定格式将新条目附加到此文件的优雅方法是什么:

{var1}:
  <<: *default
  database: {var1}

我将直接从命令行执行脚本,而不是 .sh 文件。

【问题讨论】:

    标签: linux bash command-line


    【解决方案1】:

    直接从命令行执行脚本 - 而不是 .sh 文件。

    作为使用 printf 函数附加一个新条目的示例:

    var1="third_db"
    printf "%s:\n  <<: *default\n  database: %s\n" "$var1" "$var1" >> inputfile
    

    附加新条目后的示例inputfile 内容:

    first_db:
      <<: *default
      database: first_db
    
    second_db:
      <<: *default
      database: second_db
    
    third_db:
      <<: *default
      database: third_db
    

    【讨论】:

      【解决方案2】:

      您能否尝试关注一下,如果这对您有帮助,请告诉我。

      解决方案一:使用 EOT cat 追加 Input_file。

      cat <<EOT >> Input_file
      {var1}:
        <<: *default
        database: {var1}
      EOT
      

      OR(以下解决方案,如果您想使用 var1 作为变量,其值将插入 Input_file)

      var1="foo";cat <<EOT >> Input_file
      ${var1}:
        <<: *default
        database: ${var1}
      EOT
      

      解决方案二:使用简单的 echo 命令。

      echo "{var1}:
        <<: *default
        database: {var1}" >> Input_file
      

      OR(以下解决方案,如果您想使用 var1 作为变量,其值将插入 Input_file)

      var1="foo";echo "${var1}:
        <<: *default
        database: ${var1}" >> Input_file
      

      【讨论】:

        【解决方案3】:

        我不知道是否理解正确,但您可以在命令行中使用heredoc 追加:

        $ var1=foo 
        $ cat >> yourfile<<EOF 
        heredoc> ${var1}
        heredoc>   <<:*default
        heredoc>   database: ${var1}
        heredoc> EOF
        

        就一致性而言,我会说@RomanPerekhrest 的答案是最好的:

        $ printf "%s:\n  <<: *default\n  database: %s\n" "$var1" "$var1" >> inputfile
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-11-23
          • 2011-12-05
          • 1970-01-01
          • 2011-11-01
          • 2023-02-03
          • 1970-01-01
          • 2011-12-11
          • 1970-01-01
          相关资源
          最近更新 更多