Программирование на bash - часть 3

к безопасный наши концепций Мы изучим 2 очень полезных инструмента для программирования, которые отлично работают в Bash. Научитесь создавать функции и определить трубопроводы поначалу может показаться сложным, но потом мы увидим необъятные утилита что они нам предоставляют.

Трубы

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

Труба обычно обозначается символом | что позволяет объединять выражения; Хотя он используется по умолчанию, есть и другие способы создания каналов.

Пример: распечатать последние сообщения ядра

#dmesg позволяет вам видеть последние сообщения ядра и загруженные драйверы # во время загрузки системы; tail печатает последние части файла или #command

dmesg | хвост

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

функции

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

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

function function-name {

процессы

}

Пример: функция, показывающая службы, работающие по протоколу tcp. Мы также можем увидеть, как применить больше труб.

# Мы определяем имя функции, оно может быть тем, которое нам нравится.

function services_tcp {

#cat объединяет и отображает содержимое папки / etc / services, которая # содержит все службы с соответствующими портами.

# первый grep берет список и удаляет комментарии, с –v мы инвертируем результат

# второй grep показывает только те, которые связаны с tcp

кот / и т.д. / услуги | grep –v "^ #" | grep tcp

}

Когда нам нужно выполнить эту функцию, нам просто нужно вызвать ее по имени:

tcp_services

В этом случае он работает без параметров; Если они есть, мы должны добавить их, чтобы функция работала правильно, иначе функция не будет работать должным образом. Использование return позволяет функции возвращать значение в результате процесса.

Пример: функция с входными параметрами, которая вычисляет сумму двух чисел.

#! / Bin / Баш
функция sum ()
{
# с помощью let мы можем выполнить операцию внутри кавычек
пусть "результат = 1 доллар + 2 доллара"

#return позволяет вернуть целочисленное значение. После выполнения возврата значение будет помещено в переменную $?
вернуть результат $;
}
 
# Вызывается функция суммы, и мы передаем 2 входных параметра.

добавить 2 3

# печатает значение $? с эхом, оценивающим фактическое значение переменной в кавычках
echo -e "Результат = $?";

<< Перейти к предыдущей части

Спасибо, Хуан Карлос Ортис!


Добавить в качестве предпочтительного источника в Google