2017-12-10 27 views
1

現在、私のUnixクラスの学校プロジェクトで働いています。ユーザー名を作成するために、最初の名+姓を使用してユーザ名を作成/追加するには、ユーザメニューを作成末尾に数字の重複ユーザ名

(最初の最後の+最初の4つの初期)

例。 John Smith = JSMIT

私はユーザー名を追加できますが、誰かが同じユーザー名または類似のユーザー名を入力する必要がある場合は、最後に番号を付ける必要があります。

Ex。ジェームズ・スミス= JSMIT1

はこれまでのところ、これは私が持っているもので、私はawkのにSUBSTR関数を使用する必要が知っているが、私はどのように正確にはわかりません。

ご協力いただきありがとうございます。名前は、それがmax+1を返します(存在する場合)のサフィックスは、nullになります(つまり、新しい名前を)欠落している場合

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は、あなたがそう

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

を必要と接尾辞を返します。これを既存のスクリプトに組み込むことができます。

関連する問題