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

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

Жанры

Основы программирования в Linux
Шрифт:

После того как переменная была экспортирована из командной оболочки, она экспортируется в любые сценарии, запускаемые из этой оболочки, и в любые командные оболочки, которые в свою очередь запускают эти сценарии, и т.д. Если бы сценарий export2 вызвал другой сценарий, в нем переменная

bar
также была бы доступна.

Примечание

Команды

set -а
или
set -allexport
экспортируют все переменные соответственно.

expr

Команда

expr
вычисляет выражение, составленное из ее аргументов. Чаще всего она применяется для подсчета простых арифметических выражений в следующем виде:

х=`expr $x + 1`

Символы

``
(обратная кавычка или обратный апостроф) заставляют переменную
х
принять результат выполнения команды
expr $х + 1
. Ее можно также записать с помощью синтаксической конструкции
$
вместо обратной кавычки, например, следующим образом:

х=$(expr $х + 1)

Команда expr обладает большими возможностями, с ее помощью можно вычислять различные выражения. Основные виды вычислений перечислены в табл. 2.6.

Таблица 2.6

Вычисление выражения Описания
Выражение1 | Выражение2
Выражение1
, если
Выражение1
не равно нулю, в противном случае
Выражение2
Выражение1 & Выражение2
Нуль, если оба выражения равны нулю, в противном случае
Выражение1
Выражение1 = Выражение2
Равенство
Выражение1 > Выражение2
Больше чем
Выражение1 >= Выражение2
Больше или равно
Выражение1 < Выражение2
Меньше чем
Выражение1 <= Выражение2
Меньше или равно
Выражение1 != Выражение2
Неравенство
Выражение1 + Выражение2
Сложение
Выражение1Выражение2
Вычитание
Выражение1 * Выражение2
Умножение
Выражение1 / Выражение2
Деление нацело
Выражение1 % Выражение2
Остаток от деления нацело

В современных сценариях вместо команды

expr
обычно применяется более эффективная синтаксическая конструкция
$((...))
, которая будет описана далее в этой главе.

printf

Команда

printf
есть только в современных командных оболочках. Группа X/Open полагает, что ее следует применять вместо команды
echo
для генерации форматированного вывода, несмотря на то, что, кажется, лишь немногие следуют этому совету.

У команды следующая синтаксическая запись.

printf "строка формата" параметр1 параметр2 ...

Строка формата очень похожа с некоторыми ограничениями на применяемую в языках программирования С и С++. Главным образом не поддерживаются числа с плавающей точкой, поскольку все арифметические операции в командной оболочке выполняются над целыми числами. Строка формата состоит из произвольной комбинации литеральных символов, escape-последовательностей и спецификаторов преобразования. Все символы строки формата, отличающиеся от

\
и
%
, отображаются на экране при выводе.

В табл. 2.7 приведены поддерживаемые командой escape-последовательности.

Таблица 2.7

Escape-последовательность Описание
\"
Двойная кавычка
\\
Символ обратный слэш
\a
Звуковой сигнал тревоги (звонок колокольчика или прерывистый звуковой сигнал)
\b
Символ Backspace (стирание слева)
\c
Отбрасывание последующего вывода
\f
Символ Form feed (подача бумаги)
\n
Символ перехода на новую строку
\r
Возврат каретки
\t
Символ табуляции
\v
Символ вертикальной табуляции
\ooo
Один символ с восьмеричным значением
ooo
\xHH
Один символ с шестнадцатеричным значением
HH

Спецификаторы преобразований довольно сложны, поэтому мы приведем наиболее распространенные варианты их применения. Более подробную информацию можно найти в интерактивном справочном руководстве командной оболочки bash или на страницах раздела 1 интерактивного руководства к команде

printf
(
man 1 printf
). (Если вы не найдете нужных сведений в разделе 1, попробуйте поискать в разделе 3.) Спецификатор преобразования состоит из символа
%
, за которым следует символ преобразования. Основные варианты преобразований перечислены в табл. 2.8.

Таблица 2.8

Символ преобразования  Описание
D
Вывод десятичного числа
С
Вывод символа
S
Вывод строки
%
Вывод знака
%

Строка формата используется для интерпретации остальных параметров команды и вывода результата, как показано в следующем примере:

$ printf "%s\n" hello

hello

$ printf "%s %d\t%s" "Hi There" 15 people

Hi There 15 people

Обратите внимание на то, что для защиты строки

Hi There
и превращения ее в единый параметр, строку нужно заключить в кавычки (
""
).

return

Команда

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

set

Команда

set
задает переменные-параметры командной оболочки. Она может быть полезна при использовании полей в командах, выводящих значения, разделенные пробелами.

Предположим, что вы хотите использовать в сценарии название текущего месяца. В системе есть команда

date
, содержащая название месяца в виде строки, но нужно отделить его от других полей. Это можно сделать с помощью комбинации команды
set
и конструкции
$(...)
, которые обеспечат выполнение команды
date
и возврат результата (более подробно об этом см. далее). В выводе команды date строка с названием месяца — второй параметр.

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

Петля, Кадетский Корпус. Книга пятая

Алексеев Евгений Артемович
5. Петля
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Петля, Кадетский Корпус. Книга пятая

Кодекс Крови. Книга ХII

Борзых М.
12. РОС: Кодекс Крови
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Крови. Книга ХII

Двойник короля 21

Скабер Артемий
21. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Двойник короля 21

Первый среди равных. Книга V

Бор Жорж
5. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Первый среди равных. Книга V

Огненный наследник

Тарс Элиан
10. Десять Принцев Российской Империи
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Огненный наследник

Идеальный мир для Лекаря 27

Сапфир Олег
27. Лекарь
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 27

Барон диктует правила

Ренгач Евгений
4. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон диктует правила

Возмутитель спокойствия

Владимиров Денис
1. Глэрд
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Возмутитель спокойствия

Тринадцатый XI

NikL
11. Видящий смерть
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Тринадцатый XI

Зодчий. Книга II

Погуляй Юрий Александрович
2. Зодчий Империи
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Зодчий. Книга II

Тринадцатый VIII

NikL
8. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый VIII

Шайтан Иван 2

Тен Эдуард
2. Шайтан Иван
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Шайтан Иван 2

Треск штанов

Ланцов Михаил Алексеевич
6. Сын Петра
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Треск штанов

Афганский рубеж 3

Дорин Михаил
3. Рубеж
Фантастика:
попаданцы
альтернативная история
6.00
рейтинг книги
Афганский рубеж 3