Введение в функции в Unix
В этой статье мы узнаем о некоторых основных функциях в Unix. Многие из нас, возможно, уже знали, что такое функции, но позвольте мне кратко рассказать об этом. Функция содержит набор инструкций, которые должны быть выполнены кодом, написанным внутри блока с отступом. Они полезны, когда у нас есть определенная задача, которую программа должна выполнять многократно в течение регулярных промежутков времени. Написание одного и того же кода каждый раз, очевидно, не рекомендуется, поэтому, используя функции, мы можем легко повторно использовать код и вызывать его при необходимости. Давайте теперь посмотрим, как мы можем определить и реализовать эти функции с помощью сценариев Unix Shell.
Синтаксис функций в Unix
Создание функций следует базовому синтаксическому коду следующим образом. Образец примера функции.
Код
First()
(
echo “ First Program for defining functions ”;
echo “ Yayyy! “;
)
Здесь мы написали два эхо-утверждения внутри нашей первой функции. Для вызова функции мы можем просто вызвать по имени функции.
Выход
Передача параметров в функцию в Unix
Мы успешно создали простую функцию, вызвали ее и выполнили необходимые нам команды. Теперь, что если мне нужно добавить два числа через введенные пользователем значения? Итак, здесь мы увидим, как мы можем написать функцию с аргументами. Основной синтаксис будет таким же. Пример параметризованной функции
Код
Second()
(
echo “Enter your name: “;
read name;
echo “Hi $name, have a good day”;
)
Выход
Это побудит нас ввести имя и пожелать им
Таким же образом мы можем даже создать файл сценария. Давайте напишем дополнительную функцию внутри сценария оболочки и посмотрим, как она работает.
Код
vi add.sh
echo “enter first number: “;
read a;
echo “enter the second number: “;
read b;
sum=$((a+b));
echo “ Result is $sum”;
*********************
Save the file with : wq!
Выход
Примечание: иногда при выполнении скрипта sh мы можем получить ошибку как:
Единственное, что здесь нужно сделать, это обновить права доступа к файлу.
Мы даже можем выполнить файл sh с помощью команды by. /add.sh
Таким же образом мы можем даже выполнить функцию, предоставив аргументы командной строки. Итак, давайте посмотрим, как мы можем сделать это путем добавления трех чисел.
Код
(
number1=$1;
number2=$2;
number3=$3;
sum=$((number1+number2+number3));
echo “Sum is $sum”;
)
Теперь мы можем передать наши числа в качестве аргументов командной строки, а затем получить требуемый результат.
Что если мы не передадим аргументы в функцию?
А если мы дадим только два аргумента?
Иначе, мы можем передать строки?
Мы даже можем иметь наш код таким образом, чтобы он мог отображать ошибку при передаче неверных аргументов. Ниже, давайте посмотрим, как мы можем попросить пользователя ввести аргументы, если не было передано ни одного аргумента командной строки.
Код
Add()
(
number1=$1;
number2=$2;
if ( $# -ne 2 ); then
echo “ Enter two numbers to add “;
fi
sum=$((number1+number2));
echo “ Sum is : $sum “;
)
Выход
Если мы не передадим аргументы в нашу функцию, она выдаст эхо, где мы попросили дать два числа в командной строке, а затем вывести сумму. Это происходит потому, что мы не говорили функции останавливаться, если мы сталкиваемся с ошибкой. Во втором случае мы можем видеть результат, дающий сумму должным образом без какого-либо промежуточного эха. Мы даже можем использовать команды возврата при возврате значений для этих функций Unix. Значение в операторе возврата хранится в $?
Выход
В качестве упражнения, можете ли вы попробовать написать функцию, которая выходит из строя, если мы не передадим аргументы?
Вложенные функции в Unix
По названию мы можем выяснить, что вложенные функции предназначены для определения функции внутри функции. Давайте посмотрим, как мы можем сделать это сейчас. Мы пишем это внутри скрипта для облегчения понимания.
Код
vi Nested_Function.sh
***** Code Inside the sh Function*******
#!/bin/sh
First()
(
echo “ Inside First Function “;
echo “ Calling the second function below “;
echo “**********”;
Second
echo “**********”;
echo “ After calling Second function “;
)
Second()
(
echo “ Inside Second Function”;
echo “ Done “;
)
First
************************
Save the file with : wq!
Выход
В приведенном выше примере мы только что вызвали вторую функцию внутри первой. Давайте теперь напишем функцию только внутри первой функции.
Код
vi Nest_Func1.sh
***** Code Inside the sh Function*******
First_One()
(
echo “ Inside the function First_One”;
echo “ Below is the inner function “;
Second_One()
(
echo “ ********** “;
echo “ Inside Inner function”;
echo “ Completed Second Function”;
echo “ ********** “;
)
echo “Done with second example too”;
)
First_One
Second_one
************************
Save the file with : wq!
Теперь, какой выход вы ожидаете? Как вы думаете, будут отображены детали первой и второй функций?
Выход
Мы можем ясно видеть, что функция не вызывала внутреннюю функцию внутри нее. Итак, в чем здесь проблема?
Внутри нашего скрипта мы вызвали только первую функцию. Теперь попробуйте также вызвать вторую функцию. Как уже отмечалось, здесь мы не сможем вызвать функцию самостоятельно. В приведенном выше коде мы выделили добавленный код.
Выход
Обратите внимание, что эхо, которое мы написали после выполнения Второй функции, появилось раньше самого себя. Теперь, если мы попробуем сначала вызвать вторую функцию, а затем первую?
Выход
Мы можем четко понимать, что до тех пор, пока главная / первая функция не будет вызвана, внутренняя функция не вызывается. В качестве упражнения вы можете попробовать сложение двух чисел с помощью вложенных функций? (Один для ввода пользовательских значений и другие для добавления чисел)
Вывод
Итак, вот как мы можем определить функции в Unix. И одно из главных преимуществ Unix, которое я обнаружил, заключалось в том, что ошибка в выводе может быть легко понята и может помочь исправить наш код соответствующим образом. Попробуйте выполнить эти функции и используйте команду возврата тоже. Счастливого обучения в Unix.
Рекомендуемая статья
Это было руководство по функциям в Unix. Здесь мы обсуждаем введение в функции в Unix и различные типы функций, а также синтаксис и подробное объяснение. Вы также можете просмотреть наши другие предлагаемые статьи, чтобы узнать больше -
- Unix архитектура
- Unix команды
- Использование Unix
- Вопросы интервью с UNIX
- Руководство по операторам Unix