-->

Основы программирования в Linux

На нашем литературном портале можно бесплатно читать книгу Основы программирования в Linux, Мэтью Нейл-- . Жанр: Программирование / ОС и Сети. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале bazaknig.info.
Основы программирования в Linux
Название: Основы программирования в Linux
Дата добавления: 16 январь 2020
Количество просмотров: 667
Читать онлайн

Основы программирования в Linux читать книгу онлайн

Основы программирования в Linux - читать бесплатно онлайн , автор Мэтью Нейл
В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала

1 ... 31 32 33 34 35 36 37 38 39 ... 324 ВПЕРЕД
Перейти на страницу:
Подстановка значений параметров

Вы уже видели простейший вариант присваивания параметра и подстановки значения параметра:

foo=fredecho $foo

Проблема возникает, когда вы хотите вставить дополнительные символы в конец значения переменной. Предположим, что вы хотите написать короткий сценарий обработки файлов 1_tmp и 2_tmp. Вы могли бы написать следующие строки:

#!/bin/sh

for i in 1 2 do

 my_secret_process $i_tmp

done

Но в каждом проходе цикла вы получите следующее сообщение:

my_secret_process: too few arguments

В чем ошибка?

Проблема заключается в том, что командная оболочка попыталась подставить значение переменной

$i_tmp
, которая не существует. Оболочка не считает это ошибкой; она просто не делает никакой подстановки, поэтому в сценарий my_secret_process не передаются никакие параметры. Для обеспечения подстановки в переменную части ее значения
$i
необходимо
i
заключить в фигурные скобки следующим образом:

#!/bin/sh

for i in 1 2 do

 my_secret_process ${i}_tmp

done

В каждом проходе цикла вместо

${i}
подставляется значение
i
и получаются реальные имена файлов. Вы подставляете значение параметра в строку.

В командной оболочке можно выполнять разнообразные виды подстановок. Часто они помогают найти красивое решение задач, требующих обработки многих параметров. Самые распространенные виды подстановок значений параметров приведены в табл. 2.18.

Таблица 2.18

Шаблон подстановки параметра Описание
${<i>парам</i>:-<i>значение по умолчанию</i>}
Если у
парам
нет значения, ему присваивается значение по умолчанию
${#<i>парам</i>}
Задается длина
парам
${<i>парам</i>%<i>строка</i>}
От конца значения
парам
отбрасывается наименьшая порция, совпадающая со
строкой
, и возвращается остальная часть значения
${<i>парам</i>%%<i>строка</i>}
От конца значения
парам
отбрасывается наибольшая порция, совпадающая со
строкой
, и возвращается остальная часть значения
${<i>парам</i>#<i>строка</i>}
От начала значения
парам
отбрасывается наименьшая порция, совпадающая со
строкой
, и возвращается остальная часть значения
${<i>парам</i>##<i>строка</i>}
От начала значения
парам
отбрасывается наибольшая порция, совпадающая со
строкой
, и возвращается остальная часть значения

Эти подстановки очень полезны при работе со строками. Последние четыре варианта, удаляющие части строк, особенно пригодятся при обработке имен файлов и путей к ним, как показано в упражнении 2.18.

В приведенном далее сценарии показано применение шаблонов при подстановках значений параметров.

#!/bin/sh

unset foo

echo ${foo:-bar}

foo=fud

echo ${foo:-bar}

foo=/usr/bin/X11/startx

echo ${foo#*/}

echo ${foo##*/}

bar=/usr/local/etc/local/networks

echo ${bar%local*}

echo ${bar%%local*}

exit 0

У этого сценария следующий вывод:

bar

fud

usr/bin/X11/startx

startx

/usr/local/etc/usr

Как это работает

Первая подстановка

${foo:-bar}
дает значение
bar
, поскольку у
foo
нет значения в момент выполнения команды. Переменная
foo
остается неизменной, т.е. она остается незаданной.

Примечание

Подстановка

${foo:=bar}
установила бы значение переменной
$foo
. Этот строковый шаблон устанавливает, что переменная
foo
существует и не равна
null
. Если значение переменной не равно
null
, оператор возвращает ее значение, в противном случае вместо этого переменной
foo
присваивается значение
bar
.

Подстановка

${foo:?bar}
выведет на экран
foo: bar
и аварийно завершит команду, если переменной
foo
не существует или ее значение не определено. И наконец,
${foo:+bar}
вернет
bar
, если
foo
существует и не равна
null
. Какое разнообразие вариантов!

Шаблон

{foo#*/}
задает поиск и удаление только левого символа
/
(символ
*
соответствует любой строке, в том числе и пустой). Шаблон
{foo##*/}
задает поиск максимальной подстроки, совпадающей с ним, и, таким образом, удаляет самый правый символ / и все предшествующие ему символы.

Шаблон

${bar%local*}
определяет просмотр символов в значении параметра, начиная от крайнего правого, до первого появления подстроки
local
, за которой следует любое количество символов, а в случае шаблона
${bar%%local*}
ищется максимально возможное количество символов, начиная от крайнего правого символа значения и заканчивая крайним левым появлением подстроки
local
.

1 ... 31 32 33 34 35 36 37 38 39 ... 324 ВПЕРЕД
Перейти на страницу:
Комментариев (0)
название