8.5. Условная подстановка параметров

8.5. Условная подстановка параметров

Условная подстановка позволяет проверить, установлен ли определенный параметр, или использовать вместо его значения другое. Значение самого параметра при этом не изменяется. Допустимые виды условных подстановок перечислены в таблице 8.4.

Условная подстановка Таблица 8.4

Конструкция Выполняет подстановку
${параметр:-строка} Значение по умолчанию. Если параметр имеет непустое значение, то подставляется оно, иначе — указанная строка
${параметр:=строка} Присваивание значения по умолчанию. Если параметр не имеет непустого значений, то ему присваивается «строка», после чего значение подставляется. Конструкция допустима только для переменных оболочки
${параметр:?сообщение} Ошибка, если пусто. Если параметр не имеет непустого значения, то выводится указанное сообщение. Сообщение можно опустить, тогда будет выведено стандартное сообщение
${параметр:+строка} Дополнительное значение. Если параметр имеет непустое значение, подставляется «строка», иначе — пустая строка
${параметр#шаблон} Подставляется значение параметра, в котором из головной части удален наименьший фрагмент, удовлетворяющий шаблону
${параметр##шаблон} Подставляется значение параметра, в котором из головной части удален наибольший фрагмент, удовлетворяющий шаблону
${параметр%шаблон} Подставляется значение параметра, в котором из хвостовой части удален наименьший фрагмент, удовлетворяющий шаблону
${параметр%%шаблон} Подставляется значение параметра, в котором из хвостовой части удален наибольший фрагмент, удовлетворяющий шаблону
${#параметр} Если параметр есть * или @, подставляется количество позиционных параметров, иначе — длина значения параметра в байтах

Например, команда echo ${0:+"Моя любимая оболочка"} заменит непустое значение параметра $0, равное «bash», на указанное дополнительное значение. Команда ${1:?"Не хватает параметра"} выведет сообщение, если сценарий, в котором она встречается, будет случайно запущен без аргументов. Правильным подходом к написанию сценариев было бы выводить не такое малоинформативное сообщение, а краткую справку об использовании этого сценария, подобную тому, что можно увидеть, запустив почти любую команду с ключом -usage.

Подстановки # и % полезны, например, тогда, когда нужно «выкусить» из полного пути к файлу собственно его имя или, наоборот, родительский каталог:

$ path=`which twm`; echo $path

/usr/X11R6/bin/twm

$ echo ${path##*/}

twm

$ echo ${path%/*}

/usr/X11R6/bin

$

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

7.13 Условная Операция

Из книги C++ автора Хилл Мюррей

7.13 Условная Операция условное_выражение: выражение ? выражение : выражениеУсловная операция группирует слева направо. Вычисляется первое выражение, и если оно не 0, то результатом является значение второго выражения, в противном случае значение третьего выражения. Если


11.3 Условная Компиляция

Из книги Linux для пользователя автора Костромин Виктор Алексеевич

11.3 Условная Компиляция Командная строка компилятора вида#if выражениепроверяет, является ли результатом вычисления выражения не-ноль. Выражение должно быть константным выражением, котрые обсуждаются в #12. Кроме обычных операций С++ может ипользоваться унарная операция


5.7.3 Подстановка параметров и переменных

Из книги Справочное руководство по C++ автора Страустрап Бьярн

5.7.3 Подстановка параметров и переменных Символ $ используется для обозначения операций подстановки параметров, подстановки команд и подстановок арифметических выражений. Выражение или имя, следующее за $, может быть заключено в скобки; что не обязательно, но удобно, так


5.7.4 Подстановка команд

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

5.7.4 Подстановка команд Подстановка команд является очень мощным инструментов bash. Она заключается в замене имени команды на результат ее выполнения. Существует две формы подстановки команд:$(command) и `command`Если применяется вторая из этих форм, то обратный слэш внутри кавычек


R.16.5 Условная трансляция

Из книги Linux-сервер своими руками автора Колисниченко Денис Николаевич

R.16.5 Условная трансляция С помощью препроцессора можно организовать условную трансляцию программы. Синтаксически это задается следующим образом:условное: часть-if части-elif opt часть-else opt строка-endifчасть-if: строка-if текстстрока-if: # if выражение-константа # ifdef


Условная компиляция

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

Условная компиляция Другой пакет директив препроцессора (#if, #elif, #else, #endif) позволяет выполнить компиляцию блока программного кода по условию, базируясь на предварительно заданных символах. Классическим вариантом использования этих директив является идентификация блока


19.7.7. Подстановка переменных

Из книги Технология XSLT автора Валиков Алексей Николаевич

19.7.7. Подстановка переменных Мы уже рассмотрели подстановку команд, сейчас рассмотрим подстановку переменных (см. табл. 19.41).Подстановка переменных Таблица 19.41 Конструкция Описание ${переменная:-значение} Если переменная определена и не является пустой строкой,


Условная Инструкция (Conditional)

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

Условная Инструкция (Conditional) Эта инструкция задает различные формы обработки в зависимости от выполнения определенных условий. Основная форма:if boolean_expression theninstruction; instruction; ...elseinstruction; instruction; ...endгде каждая ветвь может иметь произвольное число инструкций (а возможно и не


Условная обработка

Из книги QNX/UNIX [Анатомия параллелизма] автора Цилюрик Олег Иванович

Условная обработка В XSLT имеются две инструкции, которые поддерживают условную обработку — xsl:if и xsl:choose. Инструкция xsl:if позволяет создавать простые условия типа "если-то", в то время как xsl:choose создает более сложную конструкцию для выбора одной из нескольких имеющихся


Условная операция

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

Условная операция В языке Си имеется одна тернарная операция — уловная. Она имеет следующий синтаксис:<операнд1> ? <операнд2>: <операнд3>Выражение <операнд1> вычисляется и сравнивается с нулем. Выражение может иметь целый, плавающий тип, либо быть указателем.


Условная компиляция

Из книги автора

Условная компиляция В этом разделе описываются директивы, которые управляют условной компиляцией. Эти директивы позволяют исключить из процесса компиляции какие-либо части исходного файла посредством проверки условий (константных


Условная переменная

Из книги автора

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


9.3. Подстановка параметров

Из книги автора

9.3. Подстановка параметров Работа с переменными и/или подстановка их значений${parameter}То же самое, что и $parameter, т.е. значение переменной parameter. В отдельных случаях, при возникновении неоднозначности интерпретации, корректно будет работать только такая форма записи:


Пример 9-13. Подстановка параметров и сообщения об ошибках

Из книги автора

Пример 9-13. Подстановка параметров и сообщения об ошибках #!/bin/bash# Проверка отдельных переменных окружения.# Если переменная, к примеру $USER, не установлена,#+ то выводится сообщение об ошибке.: ${HOSTNAME?} ${USER?} ${HOME?} ${MAIL?} echo echo "Имя машины: $HOSTNAME." echo "Ваше имя: $USER." echo "Ваш домашний


Пример 9-14. Подстановка параметров и сообщение о "порядке использования"

Из книги автора

Пример 9-14. Подстановка параметров и сообщение о "порядке использования" #!/bin/bash# usage-message.sh: ${1?"Порядок использования: $0 ARGUMENT"}# Сценарий завершит свою работу здесь, если входные аргументы отсутствуют,#+ со следующим сообщением.# usage-message.sh: 1: Порядок использования: usage-message.sh