美文网首页
三、函数定义和使用

三、函数定义和使用

作者: 薛定谔的猫_1406 | 来源:发表于2019-04-14 13:19 被阅读0次

函数的定义和使用

函数1
函数的定义1
函数的定义2
函数的调用
# 命令行下定义行数
[root@izuf6j02r724hog9g0lyndz shell_practice]# test()
> {
> echo "hello world"
> }
[root@izuf6j02r724hog9g0lyndz shell_practice]# test
hello world
[root@izuf6j02r724hog9g0lyndz shell_practice]# 

案例1:定义脚本,当nginx进程挂掉之后会自动把进程拉起

如果通过ps -ef 抓取到进程后,通过echo ? =0,可以判断该进程是存在的,否则该进程就不存在,?=1进程已经死亡。假如我们在命名脚本的时候名字中包含nginx,此时我们执行脚本的时候脚本依旧作为一个进程,此时即使我们在脚本中过滤了grep 的进程,依旧会输出1,因此命名的时候不能讲脚本的名字中包含nginx。 会输出脚本执行的子进程的pid输出出来,因此可以先通过this_pid =,grep -v $this_pid自然会过滤该脚本的进程

#!/bin/bash
#

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 3
else
    systemctl start nginx
    echo "Nginx is down,Start it...."
fi
done

向函数传递参数

shell中传参
调用有参数的函数
使用$1,$2等参数

写一个脚本,可以实现"+-*/"

#!/bin/bash
#

function calcu
{
    case $2 in
        +)
            echo "`expr $1 + $3`"
            ;;
        -)
            echo "`expr $1 - $3`"
            ;;
        \*)
            echo "`expr $1 \* $3`"
            ;;
        /)
            echo "`expr $1 / $3`"
            ;;
    esac
}


calcu $1 $2 $3
#命令行调用
sh calcu.sh 20 + 30

函数返回值

返回值的方式
返回1-255区间的值
使用echo返回

实例:返回值判断nginx进程是否存在,使用this_pid=$$的时候不能用空格

三元运算符
#! /bin/bash
#

this_pid=$$

function n
{
        ps -ef | grep nginx |grep -v grep | grep -v  $this_pid &> /dev/null
        if [ $? -eq 0 ];then
                return
        else
                return 1
        fi


}

n && echo "runnint" || echo "stoped"

输出所有用户,用echo做返回值

#! /bin/bash
#
function users
{
        users=`cat /etc/passwd |cut -d: -f1`
        echo $users
}
user_list=`users`
for i in $user_list
do
        echo $i
done

局部变量与全局变量

全局变量
局部变量
如上,虽然对var2变量进行了赋值,但是因为变量赋值的函数并没有被调用,因此var2输出还是null
这个var2赋值的函数test一旦被调用,var2就变成一个全局变量,此时可以输出var2的值,87
使用loal关键字,var2变成局部变量

函数库

为什么要用函数库

函数库实例

函数库实例
  1. 定义库函数:vi bash_function。注意这里的命令替换,假如用expr 做数学运算,要转义,同时要用命令替换,假如用$(())来做数学运算,不用转义,同时不用加``符号。
function add
{
        echo "`expr $1 + $2`"
}

function reduce
{
        echo "`expr $1 - $2`"
}

function mul
{
        echo "$(($1 * $2))"
}

function mult
{
        echo "`expr $1 \* $2`"
}
~  
  1. 使用.来做命令替换
#! /bin/bash
#
. /root/shell_practice/bash_function

add 1 2
mult 3 4

mul 3 5

库函数的使用经验

相关文章

  • 三、函数定义和使用

    函数的定义和使用 案例1:定义脚本,当nginx进程挂掉之后会自动把进程拉起 如果通过ps -ef 抓取到进程后,...

  • shell脚本编程进阶:函数

    一、函数介绍 二、定义函数 三、函数的定义和使用 (1)交互式环境下定义函数;(类似cat) (2)将函数放在脚本...

  • Kotlin函数式编程 (4)✔️内联函数

    ✔️自定义内联函数使用 let 函数使用 with 函数使用 apply 函数with 和 apply 函数区别?...

  • python lambda 定义匿名或内联函数

    7.6 不使用def,用简单的方式定义内联函数 如下使用lambda定义简单函数和sorted函数结合使用

  • Python基础(6)—— 函数

    函数定义 定义函数使用def 关键字开头,后面是函数名称和圆括号()和冒号: 定义一个什么都不做的空函数,可以使用...

  • Swift学习笔记(二)

    Swift函数 Swift函数包含参数类型和返回值类型 函数定义 Swift使用关键字func定义函数。 函数定义...

  • 8. PHP 函数

    PHP 使用 function 关键字定义函数,此外还支持可变函数、引用函数和匿名函数等。 用户自定义函数 定义 ...

  • this

    this,用于定义构造函数中的属性和方法,注意构造函数不可以使用箭头函数定义,因为箭头函数中没有this,如果使用...

  • Kotlin Function vs Lambda

    函数定义方式: Lambda定义方式: 高阶函数定义: 高阶函数使用:

  • python: ftplib模板

    使用ftplib连接ftp,定义下载和上传函数 下载函数 上传函数 运行

网友评论

      本文标题:三、函数定义和使用

      本文链接:https://www.haomeiwen.com/subject/ohdmiqtx.html