Чтение онлайн

на главную - закладки

Жанры

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

Купер Мендель

Шрифт:

${var/%Pattern/Replacement}

Если в переменной var найдено совпадение с Pattern, причем совпадающая подстрока расположена в конце строки (суффикс), то оно заменяется на Replacement. Поиск ведется с конца строки

Пример 9-19. Поиск префиксов и суффиксов с заменой по шаблону

#!/bin/bash

# Поиск с заменой по шаблону.

v0=abc1234zip1234abc #

Начальное значение переменной.

echo "v0 = $v0" # abc1234zip1234abc

echo

# Поиск совпадения с начала строки.

v1=${v0/#abc/ABCDEF} # abc1234zip1234abc

# |-|

echo "v1 = $v1" # ABCDE1234zip1234abc

# |---|

# Поиск совпадения с конца строки.

v2=${v0/%abc/ABCDEF} # abc1234zip123abc

# |-|

echo "v2 = $v2" # abc1234zip1234ABCDEF

# |----|

echo

# ----------------------------------------------------

# Если совпадение находится не с начала/конца строки,

#+ то замена не производится.

# ----------------------------------------------------

v3=${v0/#123/000} # Совпадение есть, но не в начале строки.

echo "v3 = $v3" # abc1234zip1234abc

# ЗАМЕНА НЕ ПРОИЗВОДТСЯ!

v4=${v0/%123/000} # Совпадение есть, но не в конце строки.

echo "v4 = $v4" # abc1234zip1234abc

# ЗАМЕНА НЕ ПРОИЗВОДТСЯ!

exit 0

${!varprefix*}, ${!varprefix@}

Поиск по шаблону всех, ранее объявленных переменных, имена которых начинаются с varprefix.

xyz23=whatever

xyz24=

a=${!xyz*} # Подстановка имен объявленных переменных, которые начинаются с "xyz".

echo "a = $a" # a = xyz23 xyz24

a=${!xyz@} # То же самое.

echo "a = $a" # a = xyz23 xyz24

# Эта возможность была добавлена в Bash, в версии 2.04.

9.4.

Объявление переменных: declare и typeset

Инструкции declare и typeset являются встроенными инструкциями (они абсолютно идентичны друг другу и являются синонимами) и предназначена для наложения ограничений на переменные. Это очень слабая попытка контроля над типами, которая имеется во многих языках программирования. Инструкция declare появилась в Bash, начиная с версии 2. Кроме того, инструкция typeset может использоваться и в ksh-сценариях.

ключи инструкций declare/typeset

– r readonly (только для чтения)

declare -r var1

(declare -r var1 аналогично объявлению readonly var1)

Это грубый эквивалент констант (const) в языке C. Попытка изменения таких переменных завершается сообщением об ошибке.

– i integer

declare -i number

# Сценарий интерпретирует переменную "number" как целое число.

number=3

echo "number = $number" # number = 3

number=three

echo "number = $number" # number = 0

# Строка "three" интерпретируется как целое число.

Примечательно, что допускается выполнение некоторых арифметических операций над переменными, объявленными как integer, не прибегая к инструкциям expr или let.

– a array

declare -a indices

Переменная indices объявляется массивом.

– f functions

declare -f

Инструкция declare -f, без аргументов, приводит к выводу списка ранее объявленных функций в сценарии.

declare -f function_name

Инструкция declare -f function_name выводит имя функции function_name, если она была объявлена ранее.

– x export

declare -x var3

Эта инструкция объявляет переменную, как доступную для экспорта.

var=$value

declare -x var3=373

Инструкция declare допускает совмещение объявления и присваивания значения переменной одновременно.

Пример 9-20. Объявление переменных с помощью инструкции declare

#!/bin/bash

Поделиться:
Популярные книги

Белые погоны

Лисина Александра
3. Гибрид
Фантастика:
фэнтези
попаданцы
технофэнтези
аниме
5.00
рейтинг книги
Белые погоны

Черный дембель. Часть 1

Федин Андрей Анатольевич
1. Черный дембель
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Черный дембель. Часть 1

Лишняя дочь

Nata Zzika
Любовные романы:
любовно-фантастические романы
8.22
рейтинг книги
Лишняя дочь

Темный Лекарь 5

Токсик Саша
5. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 5

Последний из рода Демидовых

Ветров Борис
Фантастика:
детективная фантастика
попаданцы
аниме
5.00
рейтинг книги
Последний из рода Демидовых

Чиновникъ Особых поручений

Кулаков Алексей Иванович
6. Александр Агренев
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чиновникъ Особых поручений

Попаданка в академии драконов 4

Свадьбина Любовь
4. Попаданка в академии драконов
Любовные романы:
любовно-фантастические романы
7.47
рейтинг книги
Попаданка в академии драконов 4

Боги, пиво и дурак. Том 6

Горина Юлия Николаевна
6. Боги, пиво и дурак
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Боги, пиво и дурак. Том 6

Курсант: Назад в СССР 10

Дамиров Рафаэль
10. Курсант
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Курсант: Назад в СССР 10

Сделай это со мной снова

Рам Янка
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сделай это со мной снова

Болотник 2

Панченко Андрей Алексеевич
2. Болотник
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Болотник 2

Камень Книга двенадцатая

Минин Станислав
12. Камень
Фантастика:
боевая фантастика
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Камень Книга двенадцатая

Небо для Беса

Рам Янка
3. Самбисты
Любовные романы:
современные любовные романы
5.25
рейтинг книги
Небо для Беса

Надуй щеки! Том 4

Вишневский Сергей Викторович
4. Чеболь за партой
Фантастика:
попаданцы
уся
дорама
5.00
рейтинг книги
Надуй щеки! Том 4