English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Linux shell может определять функции пользователя, которые можно свободно вызывать в скриптах shell.
Формат определения функции в shell таков:
[function] funname [()] { action; [return int;] }
Объяснение:
1、Можно определить функцию с помощью function fun() или directly fun() без параметров.
2、Возврат параметра, можно показать сумму: return возвращает, если не указан, то возвращает результат последней команды. return следует за числом n (0-255)
Ниже приведен пример определения функции и ее вызова:
#!/bin/bash # author:базовый учебник сайт # url:ru.oldtoolbag.com demoFun(){ echo "Это моя первая shell-функция!" } echo "-----Функция начала выполнение-----" demoFun echo "-----Функция выполнена-----"
Результат вывода:
-----Функция начала выполнение----- Это моя первая shell-функция! -----Функция выполнена-----
Ниже определена функция с предложением return:
#!/bin/bash # author:базовый учебник сайт # url:ru.oldtoolbag.com funWithReturn(){ echo "Эта функция будет производить сумму введенных двух чисел..." echo "Введите первое число: " read aNum echo "Введите второе число: " read anotherNum echo "Два числа равны $aNum и $anotherNum !" return $(($aNum+$anotherNum)) } funWithReturn echo "Сумма введенных двух чисел равна $? !"
Вывод будет类似 к следующему:
Эта функция будет производить сумму введенных двух чисел... Введите первое число: 1 Введите второе число: 2 Два числа равны 1 и 2 ! Сумма введенных двух чисел равна 3 !
Значение возвращаемое функцией можно получить через $? после вызова функции.
Внимание: все функции должны быть определены перед использованием. Это означает, что функции необходимо поместить в начале скрипта, до того как интерпретатор shell обнаружит их, чтобы можно было использовать. Вызов функции возможен только через имя функции.
В Shell, вызывая функцию, можно передавать ей параметры. В теле функции, через $n можно получить значение параметра, например, $1 означает первый параметр, $2 означает второй параметр...
Пример функции с параметрами:
#!/bin/bash # author:базовый учебник сайт # url:ru.oldtoolbag.com funWithParam(){ echo "первый параметр равен $1 !" echo "Второй параметр - $2 !" echo "Десятый параметр - $10 !" echo "Десятый параметр - ${10} !" echo "Двенадцатый параметр - ${11} !" echo "Общее количество параметров - $# !" echo "Вывести все параметры как строку $* !" } funWithParam 1 2 3 4 5 6 7 8 9 34 73
Результат вывода:
Первый параметр - 1! Второй параметр - 2! Десятый параметр - 10! Десятый параметр - 34! Двенадцатый параметр - 73! Общее количество параметров - 11! Вывести все параметры как строку 1 2 3 4 5 6 7 8 9 34 73 !
Обратите внимание, что $10 не может получить десятый параметр, для получения десятого параметра необходимо использовать ${10}. При n>=10 необходимо использовать ${n} для получения параметра.
Кроме того, есть несколько специальных символов для обработки параметров:
Обработка параметров | Описание |
---|---|
$# | Количество переданных параметров в скрипт или функцию. |
$* | Показать все переданные скрипту параметры в виде одной строки. |
$$ | Текущий идентификатор процесса выполнения скрипта. |
$! | ID последнего процесса, выполняемого в фоновом режиме. |
$@ | Как и $*, но при использовании добавляется кавычки, и каждый параметр возвращается в кавычках. |
$- | Показать текущие опции Shell, аналогично команде set. |
$? | Показать состояние завершения последней команды. 0 означает absence of errors, any other value indicates an error. |