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


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


# Все это могло бы быть объединено в одну команду. # Это лишь вопрос стиля. }

declare -f CopyArray # "Указатель" на функцию CopyArray=CpArray_Mac # Оператор Присваивания

Hype() {

# Исходный массив с именем в $1. # (Слить с массивом, содержащим "-- Настоящий Рок-н-Ролл".) # Вернуть результат в массиве с именем $2.

local -a TMP local -a hype=( -- Настоящий Рок-н-Ролл )

$($CopyArray $1 TMP) TMP=( ${TMP[@]} ${hype[@]} ) $($CopyArray TMP $2) }

declare -a before=( Advanced Bash Scripting ) declare -a after

echo "Массив before = ${before[@]}"

Hype before after

echo "Массив after = ${after[@]}"

# Еще?

echo "Что такое ${after[@]:4:2}?"

declare -a modest=( ${after[@]:2:1} ${after[@]:3:3} ) # ---- выделение подстроки ----

echo "Массив Modest = ${modest[@]}"

# А что в массиве 'before' ?

echo "Массив Before = ${before[@]}"

exit 0

--

Массивы допускают перенос хорошо известных алгоритмов в сценарии на языке командной оболочки. Хорошо ли это -- решать вам.

Пример 25-6. Старая, добрая: "Пузырьковая" сортировка

#!/bin/bash # bubble.sh: "Пузырьковая" сортировка.

# На каждом проходе по сортируемому массиву, #+ сравниваются два смежных элемента, и, если необходимо, они меняются местами. # В конце первого прохода, самый "тяжелый" элемент "опускается" в конец массива. # В конце второго прохода, следующий по "тяжести" элемент занимает второе место снизу. # И так далее. # Каждый последующий проход требует на одно сравнение меньше предыдущего. # Поэтому вы должны заметить ускорение работы сценария на последних проходах.

exchange() { # Поменять местами два элемента массива. local temp=${Countries[$1]} # Временная переменная Countries[$1]=${Countries[$2]} Countries[$2]=$temp

return }

declare -a Countries # Объявление массива, #+ необязательно, поскольку он явно инициализируется ниже.

# Допустимо ли выполнять инициализацию массива в нескольки строках? # ДА!




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