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


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


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

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. # с заменой символов перевода строки на пробелы.

echo ${array1[@]} # список элементов массива. # 1 a b c 2 d e fg # # Каждое "слово", в текстовом файле, отделяемое от других пробелами #+ заносится в отдельный элемент массива.

element_count=${#array1[*]} echo $element_count # 8

Пример 25-5. Копирование и конкатенация массивов

#! /bin/bash # CopyArray.sh # # Автор: Michael Zick. # Используется с его разрешения.

# "Принять из массива с заданным именем записать в массив с заданным именем" #+ или "собственный Оператор Присваивания".

CpArray_Mac() {

# Оператор Присваивания

echo -n 'eval ' echo -n "$2" # Имя массива-результата echo -n '=( ${' echo -n "$1" # Имя исходного массива echo -n '[@]} )'




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