J'ai un script bash qui fera écho dans un fichier config.txt. Chaque fois qu'il est exécuté, je veux qu'il insère une valeur comme marqueur.
Exemple ce que j'ai actuellement
echo userdataOH$((RANDOM % 10))\", >> /usr/local/src/bin/config.txt
Cela produira userdataOH1-10
mais aléatoire et la valeur peuvent être identiques.
Je voudrais quelque chose comme
echo userdataOH$((Value))\", >> /usr/local/src/bin/config.txt
Value
étant 1-10 et les nombres ne peuvent pas se répéter. Est-ce possible?
#!/usr/bin/env bash
config_file=/usr/local/src/bin/config.txt
last_value=$(tail -1 $config_file 2>/dev/null | Perl -n -e 'print $1 if /OH(\d+)",\s*$/' || 0)
next_value=$((last_value + 1))
echo -n userdataOH$next_value\", >> $config_file
Le last_value
line extrait le nombre après OH
de la dernière ligne du fichier d'entrée (config.txt). Si aucun de ces nombres ne peut être trouvé, il est par défaut 0
.
Le echo -n
supprime l'habituel \n
(nouvelle ligne) après écho. Sans cela, toutes les nouvelles lignes userdataOHNN
seraient sur une ligne distincte au lieu d'être ajoutées à la dernière ligne.
Je ne suis pas sûr du \"
dans votre question. Il imprime un littéral "
. Supprimez-le des commandes echo
et Perl
s'il s'agissait d'une faute de frappe.