【问题标题】: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