Latest web development tutorials

функция Shell

Linux оболочки может быть определяемые пользователем функции, то вы можете легко позвонить в сценариях оболочки.

Определение Формат функции оболочки выглядит следующим образом:

[ function ] funname [()]

{

    action;

    [return int;]

}

Объяснение:

  • 1, может принимать функцию удовольствие () определяется как прямая забава () определяется, без каких-либо параметров.
  • 2, возвращаемые параметры могут быть отображены плюс: возвращение возврата, если нет, то результат будет последней команды запуска, в качестве возвращаемого значения. а затем возвращаемого значения п (0-255

Следующий пример определяет функцию и вызов:

#!/bin/bash
# author:本教程
# url:www.w3big.com

demoFun(){
    echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun
echo "-----函数执行完毕-----"

Выход:

-----函数开始执行-----
这是我的第一个 shell 函数!
-----函数执行完毕-----

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

#!/bin/bash
# author:本教程
# url:www.w3big.com

funWithReturn(){
    echo "这个函数会对输入的两个数字进行相加运算..."
    echo "输入第一个数字: "
    read aNum
    echo "输入第二个数字: "
    read anotherNum
    echo "两个数字分别为 $aNum 和 $anotherNum !"
    return $(($aNum+$anotherNum))
}
funWithReturn
echo "输入的两个数字之和为 $? !"

Выход подобное следующему:

这个函数会对输入的两个数字进行相加运算...
输入第一个数字: 
1
输入第二个数字: 
2
两个数字分别为 1 和 2 !
输入的两个数字之和为 3 !

Функция Возвращаемое значение после вызова этой функции через $? Получается.

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


Аргументы функции

В Shell, вы можете передать параметры, к которым функция вызывается. В теле функции внутри, чтобы получить значение параметра в виде $ п, например, $ 1 для первого аргумента, $ 2 для второго параметра ...

Пример функции с параметрами:

#!/bin/bash
# author:本教程
# url:www.w3big.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}. При п> = 10, вам нужно использовать $ {п}, чтобы получить параметры.

Кроме того, существует несколько параметров для обработки специальных символов:

обработка параметров объяснение
$ # Число параметров, передаваемых в скрипт
$ * В пределах одной строки отображаются все параметры, переданные сценарию
$$ Текущий процесс идентификационный номер сценария работает
$! И, наконец, процесс, выполняемый в фоновом режиме идентификационного номера
$ @ * $ С такой же, но когда вы используете кавычки, и возвращает значение каждого параметра в кавычках.
$ - Shell отображает текущий параметр, чтобы использовать ту же команду функции набора.
$? Отображает статус выхода последней команды. 0 указывает на отсутствие ошибок, а также любое другое значение указывает на ошибку.