if [ $# -ne "$ARGCOUNT" ] then echo "Порядок использования: `basename $0` имя" exit $E_WRONGARGS fi
assign_value () # Присвоить числовые значения { #+ символам в имени.
val1=bfpv # 'b,f,p,v' = 1 val2=cgjkqsxz # 'c,g,j,k,q,s,x,z' = 2 val3=dt # и т.п. val4=l val5=mn val6=r
# Попробуйте разобраться в том, что здесь происходит.
value=$( echo "$1" \ | tr -d wh \ | tr $val1 1 | tr $val2 2 | tr $val3 3 \ | tr $val4 4 | tr $val5 5 | tr $val6 6 \ | tr -s 123456 \ | tr -d aeiouy )
# Символам в имени присваиваются числовые значения. # Удаляются повторяющиеся числа, если они не разделены гласными. # Гласные игнорируются, если они не являются разделителями, которые удаляются в последнюю очередь. # Символы 'w' и 'h' удаляются в первую очередь. }
input_name="$1" echo echo "Имя = $input_name"
# Перевести все символы в имени в нижний регистр. # ------------------------------------------------ name=$( echo $input_name | tr A-Z a-z ) # ------------------------------------------------
# Начальный символ в индекса "созвучия": первая буква в имени. # --------------------------------------------
char_pos=0 # Начальная позиция в имени. prefix0=${name:$char_pos:1} prefix=`echo $prefix0 | tr a-z A-Z` # Первую букву в имени -- в верхний регистр.
let "char_pos += 1" # Передвинуть "указатель" на один символ. name1=${name:$char_pos}
# ++++++++++++++++++++++++++++ Исключение отдельных ситуаций +++++++++++++++++++++++++++++++ # Теперь мы передвинулись на один символ вправо. # Если второй символ в имени совпадает с первым #+ то его нужно отбросить. # Кроме того, мы должны проверить -- не является ли первый символ #+ гласной, 'w' или 'h'.
char1=`echo $prefix | tr A-Z a-z` # Первый символ -- в нижний регистр.
assign_value $name s1=$value assign_value $name1 s2=$value assign_value $char1 s3=$value s3=9$s3 # Если первый символ в имени -- гласная буква #+ или 'w' или 'h', #+ то ее "значение" нужно отбросить. #+ Поэтому ставим 9, или другое #+ неиспользуемое значение, которое можно будет проверить.