设置特定模式格式和仅更改数据的最佳方法是什么

时间:2017-10-07 15:05:15

标签: linux bash command-line

让我说我的文件中有很多这样的条目:

first_db:
  <<: *default
  database: first_db

second_db:
  <<: *default
  database: second_db

在bash脚本中使用牢固设置的格式将新条目附加到此文件的优雅方式是什么:

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

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

3 个答案:

答案 0 :(得分:0)

我不知道是否正确理解,但是您可以使用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

答案 1 :(得分:0)

  

直接从命令行执行脚本 - 而不是.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 :(得分:0)

请您试着跟随并告诉我这是否对您有帮助。

解决方案1: 使用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