Comment append l’incrément de +1 à chaque instance d’un nom d’utilisateur répété

echo "Enter your First Name: "; read first echo "Enter your Last Name: "; read last user=${first:0:1}${last:0:4} echo "Your Username is: " $user echo $user":"$first":"$last>> Print.txt 

Jusqu’à présent, je peux stocker le nom / prénom d’un utilisateur dans un fichier et utiliser cette information pour créer un nom d’utilisateur unique basé sur les informations fournies qui sont également stockées dans le fichier. Mais en réalisant que beaucoup de personnes peuvent avoir le même nom d’utilisateur, comment puis-je le faire rechercher dans le fichier print.txt pour voir s’il y en a plusieurs du même nom d’utilisateur, puis append l’incrément correct au nom d’utilisateur en fonction de cela. Je pense que j’aurai besoin d’une boucle while et grep -q mais j’ai à ce pendant un certain temps et je ne peux pas le comprendre.

Exemple pour montrer visuellement ce que j’aimerais atteindre

  first name: daniel last name: nash user name will be DNASH first name: donna last name: nash user name will be DNASH1 first name: donald last name: nash user name will be DNASH2 

Au lieu d’utiliser une boucle while, vous pouvez utiliser l’option “-c” de grep:

 #!/bin/bash [ ! -f Print.txt ] && touch Print.txt read -p "Enter your First Name: " _FIRST read -p "Enter your Last Name: " _LAST _USER=${_FIRST:0:1}${_LAST:0:4} _COUNT=`grep -c "${_USER}" Print.txt` if [ ${_COUNT} -gt 0 ] ; then _USER="${_USER}${_COUNT}" fi echo "Your Username is: ${_USER}" echo "${_USER}:${_FIRST}:${_LAST}" >> Print.txt 

Est-ce que cela accomplit ce que vous aviez en tête?

Vous pouvez utiliser:

 n="" while grep -qFx "${user}$n" <(cut -d: -f1 Print.txt); do ((n++)) done user="$user$n" echo "user name will be $user"