shell-函数篇

shell 脚本的函数

 

#!/usr/bin/env bash

function cpu_load() {

echo " cpu 负载监控"
}


function main() {
cpu_load
}

main


LAB1:监控nginx服务,挂了就重启
#!/bin/bash
#
# 获取脚本子进程的pid,如果脚本名称中带nginx,也会当成nginx进程
this_pid=$$
 
while true
do
ps -ef | grep nginx | grep -v grep | grep -v $this_pid &> /dev/null
 
 
if [ $? -eq 0 ];then
    echo "Nginx is running well"
    sleep 5
else
    systemctl start nginx
    echo "Nginx is down,Start it..."
fi
done

 

系统下后台运行

nohup sh nginx_daemon.sh &

#查看日志
tailf nohup.out

 

函数返回值

返回值有两种方式:

  • return
  • echo

shell-函数篇_第1张图片

 

 

 shell-函数篇_第2张图片

 

 

 

LAB1:判断nginx进程是否存在

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

nginx.sh

 1 #!/bin/bash
 2 
3
4 this_pid=$$ 5 6 function is_nginx_running 7 { 8 ps -ef | grep nginx | grep -v grep | grep -v $this_pid &> /dev/null 9 if [ $? -eq 0 ];then 10 return 0 11 else 12 return 1 13 fi 14 } 15 16 is_nginx_running && echo "nginx is running" || echo "nginx is stopped"

查看脚本进程的执行过程

bash -x nginx.sh

shell-函数篇_第3张图片

 

 

案例2  获取系统中的用户

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

get_sys_user.sh

 1 #!/bin/bash
 2  
 3 # 获取系统所有的用户名
 4 function get_users
 5 {
 6     users=`cat /etc/passwd | cut -d: -f1`
 7     echo $users
 8 }
 9  
10 # 定义一个变量将获取用户列表赋值给这个变量
11 user_list=`get_users`
12  
13 index=1
14 for u in $user_list
15 do
16     echo "the $index user is : $u"
17     index=$(($index+1))
18 done

 

执行脚本,输出如下

shell-函数篇_第4张图片

 

 

注:

return 常用来返回 0 and 1 用于其他函数或变量调用

echo  常用与输出

你可能感兴趣的:(shell-函数篇)