shell中的case语句与函数 您所在的位置:网站首页 如何调用shell脚本中的函数参数 shell中的case语句与函数

shell中的case语句与函数

2024-07-13 16:19| 来源: 网络整理| 查看: 265

1、选择分支case语句

和其他编程语言不一样的是,shell的选择分支语句为case in

语法:

case $var in pattern1) command ;; #;;相当于break pattern2) command ;; pattern3) command ;; *) #default,不满足以上分支情况,默认执行*)下的语句 command ;; esac

案例:

#!/bin/bash printf "Input integer number: " read num case $num in 1) echo "Monday" ;; 2) echo "Tuesday" ;; 3) echo "Wednesday" ;; 4) echo "Thursday" ;; 5) echo "Friday" ;; 6) echo "Saturday" ;; 7) echo "Sunday" ;; *) echo "error" esac 2、函数 (1)函数定义

语法:

语法一: 函数名 () { 代码块 [return value] } 语法二: function 函数名 { 代码块 [return value] } (2)函数调用

格式:FunctionName parameter1 parameter2 parameterN

1️⃣脚本中调用

示例:

#! /bin/bash #---------------------------------------------- # FileName :function.sh # Author :kerongw # Date :2021年06月15日 # Description : #---------------------------------------------- echo "123456789" #函数定义,$1表示传递第一个参数,$2表示传递的第二个参数 function whobig { if(($1>$2||$1==$2)) then echo "$1 is big" else echo "$2 is big" fi } echo "调用函数" #调用函数并传递参数2 和 5 whobig 2 5 echo "函数调用结束"

在这里插入图片描述

2️⃣命令行中调用

脚本中的函数也可以在命令行中调用,不过要先以当前shell进程执行脚本后才可调用

source script.sh

FunctionName parameter1 parameter2 parameterN

示例:

#! /bin/bash #---------------------------------------------- # FileName :function.sh # Author :kerongw # Date :2021年06月15日 # Description : #---------------------------------------------- echo "函数定义前" fun_test() { echo "传递给函数的第一个参数为:$1" echo "传递给函数的第二个参数为:$2" echo "传递给函数的第三个参数为:$3" } echo "函数定义结束"

source命令可以在当前bash环境下读取并执行FileName中的命令,我们一般直接执行脚本的话是在后台另起一个shell进程执行我们的脚本。而使用source命令可以使当前的脚本直接在当前的shell中直接运行

在这里插入图片描述

(3)函数传参

给函数传参和给shell脚本传递参数相似,在函数内部参数都是用$n来接受的。除了$n外还有三个比较重要的变量

$#:可以获取传递参数的个数$@或$*:可以一次性获取所有参数。详情参见 function funtest { echo "一共给函数传递了$#个参数" echo "参数是$*" echo "第一个参数是$1" echo "第一个参数是$2" echo "第一个参数是$3" } echo "函数调用开始" funtest aa bb cc echo "函数调用结束"

在这里插入图片描述

(4)函数返回值

shell中的返回值表示函数的退出状态。返回0表示成功,返回非0表示失败出错了

shell函数返回值只能介于0~255之间,0表示成功,非0表示失败,具体可自定义。若函数没有return 语句,则使用默认退出状态,即最后一条命令的退出状态。因此严禁的写法为return $?

#! /bin/bash #---------------------------------------------- # FileName :return.sh # Author :kerongw # Date :2021年06月15日 # Description : #---------------------------------------------- function fun_test1 { return $(($1+$2)) } function fun_test2 { echo "command" > /dev/null return $? #当函数没有返回值时,我们应该返回上一条命令的返回值 } fun_test1 1 2 echo "fun_test1 return value is $?" fun_test2 echo "fun_test2 return value is $?"

在这里插入图片描述

对于超过255或者其他类型的返回值,可以借助以下方式获取返回值

借助全局变量,将返回结果赋值给全局变量在函数内部使用echo 、printf命令将结束输出,在函数外部使用$()或``捕获结果 ①借助全局变量获取返回值 #! /bin/bash #---------------------------------------------- # FileName :global.sh # Author :kerongw # Date :2021年06月15日 # Description : #---------------------------------------------- sum=0 function getsum { for ((i=$1;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有