2017-10-07 2 views
1

Disons que j'ai beaucoup d'entrées comme celui-ci dans mon dossier:Quelle est la meilleure façon de définir le format de modèle spécifique et changeant seulement les données

first_db: 
    <<: *default 
    database: first_db 

second_db: 
    <<: *default 
    database: second_db 

Qu'est-ce qu'un moyen ellegant pour ajouter de nouvelles entrées dans ce fichier avec fermeté format mis en script bash:

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

Je vais exécuter le script directement à partir de la ligne de commande - pas de fichier .sh.

Répondre

0

Je ne sais pas si bien compris, mais à partir de la ligne de commande vous pourriez ajouter à l'aide heredoc:

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

En termes de cohérence, je dirais que @RomanPerekhrest réponse est la meilleure:

$ printf "%s:\n <<: *default\n database: %s\n" "$var1" "$var1" >> inputfile 
Exécutez le script directement à partir de la ligne de commande - pas du fichier .sh.
0

À titre d'exemple annexant une nouvelle entrée avec printf fonction:

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

Un inputfile exemplaire contenu après l'ajout de la nouvelle entrée:

first_db: 
    <<: *default 
    database: first_db 

second_db: 
    <<: *default 
    database: second_db 

third_db: 
    <<: *default 
    database: third_db 
0

Pourriez-vous s'il vous plaît essayer de suivre et Faites-moi savoir si cela vous aide.

1er Solution: Utiliser chat EOT pour appending INPUT_FILE.

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

OU (solution suivante, si vous souhaitez utiliser var1 comme une variable dont la valeur à insérer dans INPUT_FILE)

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

Solution 2: Utilisation de la commande simple écho.

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

OU (solution suivante, si vous souhaitez utiliser var1 comme une variable dont la valeur à insérer dans INPUT_FILE)

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