Shell编程(四)- 函数

这是我参与更文挑战的第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
喜欢就支持一下吧
点赞0 分享