Il se peut que l'on soit amené à modifier des variables dans des fichiers pour les faire passer d'une valeur A à une valeur B et inversement. Aller dans le fichier, trouver la ligne à changer et sauvegarder peut prendre un certain temps si cette tâche est effectuée de manière répétitive, c'est pourquoi nous allons voir comment créer un script pout simplifier tout ça.

L'exemple complet de ce que nous allons voir est disponible sur ma page Github.

Admettons que notre fichier s'appelle mon-fichier.txt et que dans sa configuration nous avons :

...

mavariable=true

...

Nous voulons passer facilement la valeur de mavariable de true à false et inversement, il est possible de le faire avec la commande sed :

sed -i "s/mavariable=true/mavariable=false/g" "mon-fichier.txt"

Détails de la commande :

  • -i : précise que l'on veut modifier le contenu dans le fichier
  • s : indique de l'on veut faire un remplacement, la syntaxe est généralement : s/actuel/remplacement/
  • g : indique que l'on veut remplacer toutes les occurences de la ligne ciblée

Mais ça ne marche que dans un sens ? Pour pouvoir faire l'inverse facilement et sans taper la commande à chaque fois nous allons créer un fichier, pour l'exemple il va s'appeler script.sh et contiendra :

# Variables utilisées pour modifier la configuration
variable_1="mavariable=false"
variable_2="mavariable=true"

# Fichier à modifier
fichier="mon-fichier.txt"

# Si valeur_1 est la valeur trouvée dans la configuration
if grep -q "$variable_1" "$fichier"; then
  sed -i "s/$variable_1/$variable_2/g" "$fichier"
  echo "la valeur de mavariable est définie sur true"
# Si c'est la valeur de variable_2 qui est trouvée
elif grep -q "$variable_2" "$fichier"; then
  sed -i "s/$variable_2/$variable_1/g" "$fichier"
  echo "la valeur de mavariable est définie sur false"
# Ni l'un ni l'autre
else
  echo "Ni '$variable_1' ni '$variable_2' n'a été trouvé dans le fichier."
fi

Avec ce script, il est possible de basculer entre les valeurs et gérer le cas ou l'on ne trouve ni la valeur 1 ni la valeur 2.

Pour y faire appel, il suffit de faire :

bash script.sh

 Il est maintenant possible de mettre à jour la valeur que l'on a décidé de gérer avec ce script sans aller dans le fichier lui même à chaque fois.