快速入门:如何在Bash中编写函数

在几乎所有编程语言中,我们所使用的功能不过是用逻辑块编写的代码来执行重复或递归操作。 在Shell编程中,我们在Bash中也有一个称为函数的功能,其作用相同。 在本文中,我们将学习Bash函数。

Bash函数的基本结构

function_name ( ) {
 
<command1>
<command2>
<command3>
.
.
.
<commandN>
 
}

上面显示的结构或Bash函数的主要构造块也称为Bash函数限定符。 确保在任何地方调用此Bash函数之前先定义它。

Bash功能示例

[[email protected] tmp]# cat function1.sh
#!/bin/bash
# Основная функция
print () {
echo Привет от основной функции AndreyEx
}
print
[[email protected] tmp]#

在上面的示例中,我们编写了一个Bash“ print()”函数,该函数在调用该函数时进行打印或回显。 如上所述,我们有一个print()函数,然后使用下面的print命令调用它。

现在让我们开始做这部分。

[[email protected] tmp]# chmod u+x function1.sh
[[email protected] tmp]# ./function1.sh
Привет от основной функции AndreyEx
[[email protected] tmp]

在上面的代码中,我们使用以下命令制作了一个shell脚本function1.sh可执行文件 chmod… 并且,像往常一样,我们使用“ ./”执行脚本,后跟外壳脚本的名称。

传递参数或参数

与C或Java等著名的编程语言不同,我们还可以将参数或脚本参数传递给Bash。 让我们以将参数或参数传递给函数为例。

[[email protected] tmp]# cat ./function2.sh
#!/bin/bash
# Передача аргумента или параметра
print () {
echo Привет $1 от AndreyEx
}
print RedHat_users
print Ubuntu_users
[[email protected] tmp]#

该函数与示例函数中使用的函数相同,但是这次我们将两个参数或参数传递给print()函数:RedHat_users和Ubuntu_users。 并且在重复消息时使用此参数。

让我们运行该函数以查看结果。

[[email protected] tmp]# ./function2.sh
Привет RedHat_users от AndreyEx
Привет Ubuntu_users от AndreyEx
[[email protected] tmp]#

使用bash函数复制值

与主要编程语言不同,我们可以使用一个返回值,该返回值用于将数据值发送回调用位置。

[[email protected] tmp]# cat function3.sh
#!/bin/bash
# Функция возвращает значение
multiplication () {
expr $1 * $2
}
ans=$(multiplication $1 $2)
echo Умножение $1 на $2 равно: $ans
[[email protected] tmp]#

在上面的示例中,我们传递了两个参数$ 1和$ 2,它们在执行shell脚本期间输出。 在函数内部,我们将这些参数相乘并将其发送回去。 它使用一个称为“ ans”的变量进行初始化,该变量用于打印返回值。

让我们看一下同一示例的执行情况。

[[email protected] tmp]# ./function3.sh 3 5
Умножение 3 на 5 равно: 15

使用参数重用实际命令

我们还可以使用相同的命令名称编写一个函数。 基本上,我们将包装有效的命令,并为此提供选项。

[[email protected] tmp]# cat function4.sh
#!/bin/bash
# Оболочка функции
date () {
command date +%D
}
date
[[email protected] tmp]#

在上面的包装命令示例中,我们将“ date”命令用作函数名称,并使用“ +%D”选项将其包装。

[[email protected] tmp]# ./function4.sh
29/03/17

因此,理想情况下,我们通常使用命令返回日期“ BDT 2017年3月29日星期六19:16:12”作为输出,但是由于包装,我们的包装命令输出将输出显示为“ 03/29/17”。

Sidebar