文章目录
此链接通往 Bash Shell 编程学习的目录导航 ,从入门到放弃,感兴趣的可以去看看:
1、函数介绍
Shell 允许将 一组命令集 或 语句 形成一个可用块!这个可用块 就称之为 Shell 函数!
优点: 只需定义一次,后期便可随时使用! 无需在 shell 脚本中添加重复的语句块!
2、函数定义的方式:
方式1:
function functionname(函数名)
{
cmd...
}
方式2:
functionname(){
cmd
}
3、注意点:
1、函数名称 在 当前脚本 必须具有唯一性!但是,如果有多个相同名称的函数,则在调用函数时以最后一个为准1
2、调用函数时可以传递参数,函数内部可以使用位置变量 $1 $2..
3、 函数值 可以赋值给变量使用! 格式: varname=$(functionname),此时的函数相当于一个命令!
4、调用函数:
1)、创建函数:
#!/bin/bash
function abc {
echo "hello"
}
或:
aaa() {
echo "nihao"
}
2)、调用函数:
当你创建了函数之后,直接写 函数名即可调用!
#!/bin/bash
function abc {
echo "hello"
}
abc
root@zhengzelin:~# ./function.sh
hello
5、同一个脚本具有多个相同函数名 时:
function abc {
echo "hello"
}
abc() {
echo "nihao"
}
function abc {
echo "baibai~"
}
abc
执行:
root@zhengzelin:~# ./function.sh
baibai~
6、调用函数时,通过 位置变量 传递参数:
#!/bin/bash
function abc {
echo $1
}
aaa() {
echo $2
}
abc www.baidu.com
aaa fly sky
执行:
root@zhengzelin:~# ./while1.sh
www.baidu.com
sky # 这里 函数 aaa 调用的位置变量是 $2 ,所以是 sky
8、将函数赋值给变量:
# 注意: 函数赋值时,相当于一个命令,你得使用 `functionname` 或 $(functionname)
#!/bin/bash
function abc {
echo $1
}
varname=$( abc 111 )
echo $varname
执行:
root@zhengzelin:~# ./while1.sh
111
9、调用函数内部的参数:
#!/bin/bash
unction abc {
let a=5*10
echo "测试调用参数"
echo $a
}
echo "5*10=$a"
执行查看结果:
root@zhengzelin:~# ./while1.sh
5*10=
发现没有成功,为什么调用函数内部的参数却没有成功呢? 这是因为你得先运行一次函数,"才可以正常调用函数内部参数"
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
#!/bin/bash
unction abc {
let a=5*10
echo "测试调用参数"
echo $a
}
abc # 调用abc函数
echo "5*10=$a"
root@zhengzelin:~# ./while1.sh
测试调用参数
50
5*10=50
10、重点: return 退出函数并返回退出码
#!/bin/bash
function abc {
let a=5*10
echo $a
return 3
echo "测试调用参数"
}
abc
查看执行结果:
root@zhengzelin:~# ./while1.sh
50
root@zhengzelin:~# echo $?
3
得知:
1、 return 退出函数,并且 return 函数之后的 cmd 不再执行!
2、 return 后面跟数字 ,代表 退出函数后 返回的状态码;如果 return 后面不加 数字,默认成功返回码是 0!
注意:
function abc {
let a=5*10
echo $a
return 3
echo "测试调用参数"
}
abc
echo hello
root@zhengzelin:~# ./while1.sh
50
hello
root@zhengzelin:~# echo $?
0
这里返回码为0 并非3 是因为 最后执行了 "echo hello" 命令!
如果你将 functionname 放到最后调用函数,那么返回码就为你规定的数字了!
注意:
return与exit 的区别:return 和 exit 都可以返回退出码,但是不同的是,return是退出函数,而exit是退出整个脚本。