shell中的case语句与函数 | 您所在的位置:网站首页 › 如何调用shell脚本中的函数参数 › shell中的case语句与函数 |
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 "函数调用结束"脚本中的函数也可以在命令行中调用,不过要先以当前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中直接运行 给函数传参和给shell脚本传递参数相似,在函数内部参数都是用$n来接受的。除了$n外还有三个比较重要的变量 $#:可以获取传递参数的个数$@或$*:可以一次性获取所有参数。详情参见 function funtest { echo "一共给函数传递了$#个参数" echo "参数是$*" echo "第一个参数是$1" echo "第一个参数是$2" echo "第一个参数是$3" } echo "函数调用开始" funtest aa bb cc echo "函数调用结束"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 实验室设备网 版权所有 |