|
к безопасный наши концепций Мы изучим 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 "Результат = $?";