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




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


if [ ${#s2_val} -gt ${n} ]; then s2_val=${s2_val:0:$n} # ==> выделение подстроки fi

eval "$s1"=\'"${s1_val}${s2_val}"\' # ==> eval $1='${s1_val}${s2_val}' во избежание проблем, # ==> если одна из переменных содержит одиночную кавычку. }

#:docstring strcmp: # Порядок использования: strcmp $s1 $s2 # # Strcmp сравнивает две строки и возвращает число меньше, равно # или больше нуля, в зависимости от результатов сравнения. #:end docstring:

###;;;autoload function strcmp () { [ "$1" = "$2" ] && return 0

[ "${1}" '<' "${2}" ] > /dev/null && return -1

return 1 }

#:docstring strncmp: # Порядок использования: strncmp $s1 $s2 $n # # Подобна strcmp, но сравнивает не более n символов #:end docstring:

###;;;autoload function strncmp () { if [ -z "${3}" -o "${3}" -le "0" ]; then return 0 fi

if [ ${3} -ge ${#1} -a ${3} -ge ${#2} ]; then strcmp "$1" "$2" return $? else s1=${1:0:$3} s2=${2:0:$3} strcmp $s1 $s2 return $? fi }

#:docstring strlen: # Порядок использования: strlen s # # возвращает количество символов в строке s. #:end docstring:

###;;;autoload function strlen () { eval echo "\${#${1}}" # ==> Возвращает длину переменной, # ==> чье имя передается как аргумент. }

#:docstring strspn: # Порядок использования: strspn $s1 $s2 # # Strspn возвращает максимальную длину сегмента в строке s1, # который полностью состоит из символов строки s2. #:end docstring:

###;;;autoload function strspn () { # Сброс содержимого переменной IFS позволяет обрабатывать пробелы как обычные символы. local IFS= local result="${1%%[!${2}]*}"

echo ${#result} }

#:docstring strcspn: # Порядок использования: strcspn $s1 $s2 # # Strcspn возвращает максимальную длину сегмента в строке s1, # который полностью не содержит символы из строки s2. #:end docstring:

###;;;autoload function strcspn () { # Сброс содержимого переменной IFS позволяет обрабатывать пробелы как обычные символы.


Содержание  Назад  Вперед