web-dev-qa-db-fra.com

Script bash - sortie vers un numéro une fois t

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?

2
user235818
#!/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.

1
PerlDuck