Искусство программирования на языке сценариев командной оболочки


Программирование на языке сценариев командной оболочки - стр. 308


E_WRONGARGS=70

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, или другое #+ неиспользуемое значение, которое можно будет проверить.




Начало  Назад  Вперед



Книжный магазин