2017-12-10 15 views
1

안녕하세요, 현재 유닉스 수업을위한 학교 프로젝트에서 일하고 있습니다. 추가/사용자 이름을 만들기 위해 이름 + 성을 사용하여 사용자 이름을 만들 수있는 사용자 메뉴 만들기끝 부분에 숫자가있는 중복 된 사용자 이름

예 (첫번째 + 첫번째 마지막 네 초기). John Smith = JSMIT

이제 사용자 이름을 추가 할 수 있지만 누군가가 동일하거나 유사한 사용자 이름을 입력하는 경우 끝에 번호로 대체 할 수 있어야합니다.

예. 제임스 스미스 =

JSMIT1은 지금까지 내가 내가 AWK에 SUBSTR 함수를 사용할 필요가 알고있을 것입니다,하지만 난 방법을 정확하게 확실하지 않다.

아무쪼록 고맙습니다. 감사합니다.

looptest=y 
while [ "$looptest" = y ] 
do 
     echo -n "Enter Name: "; read name 
     echo -n "Enter Last Name "; read last 
     echo -n "Continue(y)es or (n)o "; read looptest 
     user="${name:0:1}""${last:0:4}" 
     echo "$name:$last:$user" >> userData 
     done 
+0

bash 버전에서 지원하는 경우 (bash 4.0) 키가'$ user' 값인 연관 배열을 선언하고 매번 값을 증가시킵니다. 그런 다음 값이 1 일 때를 제외하고 * value-1 *을 문자열에 연결하십시오. –

답변

0

awk는 이름이 max+1을 반환 존재하는 경우 접미사는, null가됩니다 (즉, 새 이름을) 누락 된 경우 당신이 그렇게

awk -v name="JSMIT" '$0~name{sub(name,""); max=(max<$1+0)?$1+0:max} 
        END {print max?max+1:""}' userData 

을 필요로하는 접미사를 반환합니다. 이것을 기존 스크립트에 통합 할 수 있습니다.