Shell 函数的定义和使用

函数的介绍

  1. Linux Shell中的函数和大多数编程语言中的函数一样
  2. 将相似的任务或代码封装到函数中,供其他地方调用

语法格式

  • 格式1

  • 格式2

    1
    2
    3
    4
    5
    6
    7
    function name
    {
    command1
    command2
    ...
    conmandn
    }

如何使用函数

  • 直接使用函数名调用,可以将其想象成Shell中的一条命令
  • 函数内部可以直接使用参数$1、$…$n.
  • 调用函数: function_ name $1 $2

案例–MySQL守护进程

需求描述:写一个监控mysql的桥本,如果mysql服务宕掉,则该脚本可以检测到并将进程启动,(守护进程)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash

# 获取进程号
this_pid=$$


while true
do
ps -ef | grep mysqld | grep -v grep | grep -v $this_pid &> /dev/null

# 判断进程是否存在
if [ $? -eq 0 ];then
echo "Mysql is runing well"

else
systemctl start mysqld
echo "Mysql is down, start it..."

fi

done

函数的传递参数

高级语言函数的定义

1
2
3
4
5
6
7
int example_1 (int arg1,int arg2)
{
arg1 = arg2
........
........
return null
}

高级语言函数的调用

Shell函数传参

1
2
3
4
5
function name
{
echo "Hello $1"
echo "Hello $2"
}

Shell 函数调用

1
2
3
4
5
6
name Lily lyhcc


[root@master datas]# function greeting { echo "Hello $1, $2"; }
[root@master datas]# greeting Allen lyhcc
Hello Allen, lyhcc

简单计算器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

function cal
{
echo "$2"
case $2 in
+)
echo $(($1 + $3))
;;
-)
echo $(($1 - $3))
;;

\*)
echo "$1 $2 $3"
echo "`expr $1 \* $3`"
;;
/)
echo $(($1 / $3))
;;
esac
}

cal 2 \* 3
cal 2 + 3

注意\t


函数返回值

返回值方式

方法 格式
方法一 return
方法二 echo

使用return返回值

  1. 使用return返回值,只能返回1-255的整数
  2. 函数使用return返回值, 通常只是用来供其他地方调用获取状态,因此通常仅返回0或1 ; 0表示成功, 1表示失败

案例–判断MySQL是否在运行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/bash

this_pid=$$

function mysql_isRunning
{
ps -ef | grep mysqld | grep -v grep | grep -v $this_pid &> /dev/null
if [ $? -eq 0 ];then
return
else
return 1
fi
}
mysql_isRunning && echo "Mysql Server is running" || echo "Mysql Server is stoped"



执行过程
[root@master datas]# sh -x mysqld_check.sh
+ this_pid=14205
+ mysql_isRunning
+ grep -v 14205
+ ps -ef
+ grep mysqld
+ grep -v grep
+ '[' 0 -eq 0 ']'
+ return
+ echo 'Mysql Server is running'
Mysql Server is running

使用echo返回值

  1. 使用echo可以返回任何字符串结果
  2. 通常用于返回数据,比如一个字符串值或者列表值

案例–获取系统用户名

1
2
3
4
5
6
7
8
#!/bin/bash

function get_users
{
users=`cat /etc/passwd | cut -d ":" -f 1`
echo $users
}
get_users

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×