Как добавить приращение +1 к каждому экземпляру повторного имени пользователя - PullRequest
0 голосов
/ 10 мая 2018
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

До сих пор я могу сохранять имя / фамилию пользователя в файле и использовать эту информацию для создания уникального имени пользователя на основе предоставленной информации, которая также хранится в файле.Но, понимая, что у многих людей может быть одно и то же имя пользователя, как бы я заставил его искать в файле print.txt, чтобы увидеть, есть ли несколько одинаковых имен пользователей, а затем добавить правильное приращение к имени пользователя, основываясь на этом.Я думаю, что мне понадобится цикл while и grep -q, но я пока нахожусь в этом и не могу понять.

Пример, чтобы визуально показать, чего я хотел бы достичь

 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

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Вы можете использовать:

n=""
while grep -qFx "${user}$n" <(cut -d: -f1 Print.txt); do 
    ((n++))
done
user="$user$n"
echo "user name will be $user"
0 голосов
/ 11 мая 2018

Вместо использования цикла while вы можете использовать опцию "-c" команды 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

Осуществляет ли это то, что вы имели в виду?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...