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

Здесь есть возможность читать онлайн «Мендель Купер - Искусство программирования на языке сценариев командной оболочки» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

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

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Искусство программирования на языке сценариев командной оболочки»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Данное руководство не предполагает наличие у читателя познаний в области программирования на языке сценариев, однако, быстро восполняет этот недостаток, постепенно, шаг за шагом раскрывая мудрость и красоту UNIX. Это руководство может рассматриваться как учебник, предназначенный для самостоятельного изучения или как справочник по программированию на shell. Руководство снабжено серией хорошо прокомментированных примеров, поскольку лучший путь к изучению языка сценариев -- это написание сценариев.

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

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Искусство программирования на языке сценариев командной оболочки», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

echo

# Команда "unset" удаляет элементы из массива, или даже массив целиком.

unset colors[1] # Удаление 2-го элемента массива.

# Тот же эффект дает команда colors[1]=

echo ${colors[@]} # Список всех элементов массива -- 2-й элемент отсутствует.

unset colors # Удаление всего массива.

# Тот же эффект имеют команды unset colors[*]

#+ и unset colors[@].

echo; echo -n "Массив цветов опустошен."

echo ${colors[@]} # Список элементов массива пуст.

exit 0

Как видно из предыдущего примера, обращение к ${array_name[@]}или ${array_name[*]}относится ко всем элементам массива. Чтобы получить количество элементов массива, можно обратиться к ${#array_name[@]}или к ${#array_name[*]}. ${#array_name}-- это длина (количество символов) первого элемента массива, т.е. ${array_name[0]}.

Пример 25-4. Пустые массивы и пустые элементы

#!/bin/bash

# empty-array.sh

# Выражаю свою благодарность Stephane Chazelas за этот пример,

#+ и Michael Zick за его доработку.

# Пустой массив -- это не то же самое, что массив с пустыми элементами.

array0=( первый второй третий )

array1=( '' ) # "array1" имеет один пустой элемент.

array2=( ) # Массив "array2" не имеет ни одного элемента, т.е. пуст.

echo

ListArray()

{

echo

echo "Элементы массива array0: ${array0[@]}"

echo "Элементы массива array1: ${array1[@]}"

echo "Элементы массива array2: ${array2[@]}"

echo

echo "Длина первого элемента массива array0 = ${#array0}"

echo "Длина первого элемента массива array1 = ${#array1}"

echo "Длина первого элемента массива array2 = ${#array2}"

echo

echo "Число элементов в массиве array0 = ${#array0[*]}" # 3

echo "Число элементов в массиве array1 = ${#array1[*]}" # 1 (сюрприз!)

echo "Число элементов в массиве array2 = ${#array2[*]}" # 0

}

# ===================================================================

ListArray

# Попробуем добавить новые элементы в массивы

# Добавление новых элементов в массивы.

array0=( "${array0[@]}" "новый1" )

array1=( "${array1[@]}" "новый1" )

array2=( "${array2[@]}" "новый1" )

ListArray

# или

array0[${#array0[*]}]="новый2"

array1[${#array1[*]}]="новый2"

array2[${#array2[*]}]="новый2"

ListArray

# Теперь представим каждый массив как 'стек' ('stack')

# Команды выше, можно считать командами 'push' -- добавление нового значения на вершину стека

# 'Глубина' стека:

height=${#array2[@]}

echo

echo "Глубина стека array2 = $height"

# Команда 'pop' -- выталкивание элемента стека, находящегося на вершине:

unset array2[${#array2[@]}-1] # Индексация массивов начинается с нуля

height=${#array2[@]}

echo

echo "POP"

echo "Глубина стека array2, после выталкивания = $height"

ListArray

# Вывести только 2-й и 3-й элементы массива array0

from=1 # Индексация массивов начинается с нуля

to=2 #

declare -a array3=( ${array0[@]:1:2} )

echo

echo "Элементы массива array3: ${array3[@]}"

# Замена элементов по шаблону

declare -a array4=( ${array0[@]/второй/2-й} )

echo

echo "Элементы массива array4: ${array4[@]}"

# Замена строк по шаблону

declare -a array5=( ${array0[@]//новый?/старый} )

echo

echo "Элементы массива array5: ${array5[@]}"

# Надо лишь привыкнуть к такой записи...

declare -a array6=( ${array0[@]#*новый} )

echo # Это может вас несколько удивить

echo "Элементы массива array6: ${array6[@]}"

declare -a array7=( ${array0[@]#новый1} )

echo # Теперь это вас уже не должно удивлять

echo "Элементы массива array7: ${array7[@]}"

# Выглядить очень похоже на предыдущий вариант...

declare -a array8=( ${array0[@]/новый1/} )

echo

echo "Элементы массива array8: ${array8[@]}"

# Итак, что вы можете сказать обо всем этом?

# Строковые операции выполняются последовательно, над каждым элементом

#+ в массиве var[@].

# Таким образом, BASH поддерживает векторные операции

# Если в результате операции получается пустая строка, то

#+ элемент массива "исчезает".

# Вопрос: это относится к строкам в "строгих" или "мягких" кавычках?

zap='новый*'

declare -a array9=( ${array0[@]/$zap/} )

echo

echo "Элементы массива array9: ${array9[@]}"

# "...А с платформы говорят: "Это город Ленинград!"..."

declare -a array10=( ${array0[@]#$zap} )

echo

echo "Элементы массива array10: ${array10[@]}"

# Сравните массивы array7 и array10

# Сравните массивы array8 и array9

# Ответ: в "мягких" кавычках.

exit 0

Разница между ${array_name[@]}и ${array_name[*]}такая же, как между $@ и $*. Эти свойства массивов широко применяются на практике.

# Копирование массивов.

array2=( "${array1[@]}" )

# или

array2="${array1[@]}"

# Добавить элемент.

array=( "${array[@]}" "новый элемент" )

# или

array[${#array[*]}]="новый элемент"

# Спасибо S.C.

Операция подстановки команд -- array=( element1 element2 ... elementN ), позволяет загружать содержимое текстовых файлов в массивы.

#!/bin/bash

filename=sample_file

# cat sample_file

#

# 1 a b c

# 2 d e fg

declare -a array1

array1=( `cat "$filename" | tr '\n' ' '`) # Загрузка содержимого файла

# $filename в массив array1.

# Вывод на stdout.

# с заменой символов перевода строки на пробелы.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

Представляем Вашему вниманию похожие книги на «Искусство программирования на языке сценариев командной оболочки» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


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

Обсуждение, отзывы о книге «Искусство программирования на языке сценариев командной оболочки» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x