这是我参与更文挑战的第9天,活动详情查看:更文挑战
有时候我们的程序中,有一段代码会重复使用,如果在写一次,不但浪费时间,而且没有意义,这时候我们就可以使用函数来代码复用,使用时只需要使用这个函数就可以了。
函数
函数将某个要实现的功能模块化,使代码结构和程序的工作流程更为清晰,也提高了程序的可读性和可重用性
# 方式一 省略()
function 函数名 { # 省略() 函数名和{之间必须有空格
代码段
[return int]
}
#方式二 省略 function
函数名 () {
}
复制代码
- 若无return语句,函数返回代码段中最后一条命令的执行结果
- 函数定义后需要进行调用
例子
#!/bin/sh
# 定义函数
function hello { # 省略了()
echo "hello function"
}
# main 执行代码
hello # 函数调用
exit 0
复制代码
[root@localhost sh]# sh function.sh
hello function
复制代码
函数调用参数
函数名 参数1 参数2 ......
可以通过函数调用时传入位置变量向脚本中传递参数
Shell脚本的函数没有参数列表,但亦可通过环境变量向其中传递参数。
函数中的位置变量不与脚本中的位置变量冲突
函数中的位置变量在函数调用处传入,脚本中的位置变量在脚本执行时传入。
#!/bin/sh
_choice(){
echo "your choice is $1" # 位置变量
}
#main
case $1 in
c++)_choice c++;; # 函数调用 传入位置变量c++
java)_choice java;;
*)echo "$0:please select in(c++/java)"
esac
exit 0
[root@localhost sh]# sh function_parmes.sh
function_parmes.sh:please select in(c++/java)
[root@localhost sh]# sh function_parmes.sh java
your choice is java
复制代码
函数中的变量
- 函数中定义的变量是 全局的
#!/bin/sh
function fun(){
a=10
echo "fun:a=$a"
}
a=5
echo "main:a=$a"
fun #函数调用
echo "main:a=$a"
exit 0
# 执行结果
main:a=5
fun:a=10
main:a=10
复制代码
局部变量
- 添加 local 关键字可将变量声明为 局部变量
#!/bin/sh
function fun(){
local a=10 # 局部变量
echo "fun:a=$a"
}
a=5
echo "main:a=$a"
fun #函数调用
echo "main:a=$a"
exit 0
复制代码
执行结果
# 执行结果
main:a=5
fun:a=10
main:a=5
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END