赞
踩
函数定义的语法格式:
function function_name() {
statements
[return int_value]
}
说明:
注意:
return 语句只能返回一个介于 0 到 255 之间的 整数,而有可能超过这个范围或者返回其他值。要解决这个问题,您可以直接使用 echo 输出和而不是使用 return。
函数定义时也可以不写 function 关键字:
function_name() {
statements
[return value]
}
如果写了 function 关键字,也可以省略函数名后面的小括号:
function function_name {
statements
[return value]
}
推荐使用标准的定义写法,这样能够做到“见名知意”,一看就懂。
调用 Shell函数仅使用其函数名即可。调用函数时可以给它传递参数,也可以不传递。
不管是哪种形式,函数名字后面都不需要带括号。
函数调用语法格式:
# 无参
function_name
# 有参
function_name param1 param2 param3
注意:
示例如下:
#!/bin/bash #函数定义 function fn1(){ echo "https://www.baidu.com/1" } fn2(){ echo "https://www.baidu.com/2" } function fn3 { echo "function3" echo "https://www.baidu.com/3" } #函数调用 fn1 fn2 fn3 echo "=====" fn3_res=$(fn3) echo "fn3_res为:$fn3_res" echo "ends"
示例如下:
#!/bin/bash
function fun1(){
echo "这个函数会对输入的两个数字进行相加运算。"
echo "输入第一个数字: "
read aNum
echo "输入第二个数字: "
read bNum
sum=$(($aNum + $bNum))
echo "两个数字计算结果为:$aNum + $bNum = $sum"
}
fun1
echo "ends"
传递参数查看:Shell流程控制和传参(https://blog.csdn.net/qq_42402854/article/details/136282663)。
通过 $n的形式来接收的参数,在 Shell 中称为位置参数(命令行参数)。注意:$10 不能获取第十个参数,获取第十个参数需要 ${10}。当n>=10时,需要使用${n}来获取参数。
示例如下:
#!/bin/bash
funWithParam(){
echo "第一个参数为 $1 !"
echo "第二个参数为 $2 !"
echo "第十个参数为 $10 !" # 不对,请使用${10}
echo "第十个参数为 ${10} !"
echo "第十一个参数为 ${11} !"
echo "参数总数有 $# 个!"
echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 11 12 13 14 15 16 17 18 19 34 73
echo "ends"
$@表示函数的所有参数,
$?表示函数的退出状态(返回值)。$? 仅对其上一条指令负责,一旦函数返回后其返回值没有立即保存入参数,那么其返回值将不再能通过 $? 获得。
示例1如下:
#!/bin/bash
funWithReturn(){
aNum=$1
bNum=$2
sum=$(($aNum + $bNum))
echo "两个数字计算结果为:$aNum + $bNum = $sum"
return $(($aNum+$bNum))
}
funWithReturn 2 4
echo "两个数字之和为 $? !"
echo "ends"
示例2如下:
#!/bin/bash function getsum(){ local sum=0 for n in $@ do ((sum+=n)) done echo $sum return 0 } #调用函数并传递参数 getsum 10 20 55 15 echo "调用函数 return为 $? !" #调用函数并传递参数,最后将结果赋值给一个变量 total=$(getsum 10 20 55 15) echo "变量接收函数结果:total = $total" #也可以将变量省略 echo "直接输出函数结果:$(getsum 10 20 55 15)" echo "ends"
– 求知若饥,虚心若愚。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。