J'ai essayé d'écrire un simple script bash que j'utiliserai pour installer une application et mettre à jour son fichier de configuration. J'ai du mal à faire modifier son fichier de configuration.
# DBHost=localhost
DBName=test
# DBPassword=
des suggestions comment je peux obtenir ci-dessus modifié comme ci-dessous?
DBHost=localhost
DBName=database
DBPassword=password
Réponses:
Le meilleur moyen dépend de si vous vous attendez à ce que le fichier soit également modifié par les humains, de la complexité du fichier et de la priorité de votre script s'il semble que quelqu'un d'autre souhaite une valeur différente. Autrement dit, si le fichier contient déjà
DBPassword=swordfish
, voulez-vous le conserver ou le remplacer parDBPassword=password
?Une manière courante de gérer cela est d'avoir une section du fichier délimitée par des «commentaires magiques» et de ne modifier que la partie entre ces commentaires. Voici un moyen de le faire avec awk. Si les commentaires magiques ne sont pas présents, la nouvelle section est ajoutée à la fin du fichier. Attention: code non testé.
Cette approche ne fonctionne pas bien si le programme qui lit le fichier de configuration ne prend pas en charge plusieurs lignes définissant le même élément de configuration. Dans ce cas, vous devrez vraiment supprimer les anciens. Dans ce cas, je conseillerais de laisser les commentaires intacts et d'ajouter vos propres paramètres à la fin.
la source
Si c'est tout ce dont vous avez besoin, vous pouvez faire quelque chose comme
Cette copie de l'original
config.file
pourconfig.file.bak
et apporter les changements nécessaires.la source
Je vais aller avec "ex" en mode silencieux:
La
sed
commande de terdon est compacte et efficace. Mais l'interaction d'un "document ici" plein de commandes ex et d'interpolation de chaîne shell peut être puissante. Par exemple, le mot de passe peut être remplacé par la valeur d'une variable shell:Si vous utilisez
vi
ouvim
et que vous connaissez le mode ':', l'ajout de nouvelles / meilleures / différentes modifications est également assez facile.la source