Aller au contenu

[Bash][Linux] Modifier une valeur de paramètre dans un fichier


stormbringer

Messages recommandés

Bonjour les gens !

Ca fait longtemps que je n'ai pas embêté mon monde avec Linux.

Donc me revoici à la charge.

Comme résumé dans le titre, il s'agit de modifier, avec un script, la valeur d'un paramètre figurant dans un fichier.

En plus riche, je souhaite faire rentrer des valeurs de paramètre, afin de créer un fichier de configuration qui, lui, sera passé en paramètre d'une fonction.

Donc, j'ai un fichier contenant la variable définie selon:

toto=10;

Je souhaite la modifier, avec un peu de bash

echo "valeur de toto?"

read Val

[...]

à la suite de quoi j'aimerai modifier la valeur de toto.

Soucis: sed serait intéressant si j'arrivais à faire ce que je souhaite avec.

Par exemple, si je fais:

echo "valeur de toto?"

read Val

sed -i.bak -e "s/toto=/&${Val}/g" toto.txt

et que je rentre comme valeur 123, on obtient:

toto=12310;

ce qui n'est pas exactement ce que je souhaite.

Si vous avez (en plus de comprendre) une idée du comment ce faire, merci d'avance !

B)

Lien à poster

Je n'ai pas de bash sous la main pour vérifier, mais la syntaxe de momo, qui me semble bonne, indique dans tous les cas la marche à suivre. Il faut un motif délimité par () dans ta regexp, que tu réinjectera via 1 (et plus si affinités) dans ton motif final.

Ton 'g' final dans la commande de sed est inutile (tu n'as logiquement qu'une occurrence de ta ligne dans le fichier de conf, ou alors tu fais bizarrement tes fichiers de conf).

Ah aussi, ${Val} ne sert à rien dans ton cas, tu peux écrire directement $Val. Les accolades sont intéressantes lorsque tu veux faire des opérations Bash sur ta variable, ou que tu veux délimiter son nom par rapport des '_' l'encadrant.

Itou, rajout un petit '^' en tête de ton motif, pour être sur de matcher la bonne ligne (ex: tu laisse en commentaires les précédentes valeurs de tes variables de configuration, bah si tu ne mets pas '^' et que tu laisse le 'g' en fin de substitution, tu vas péter tout ton historique).

Et si je ne dis pas de connerie, le "-e" est inutile.

Lien à poster
×
×
  • Créer...