shell之路 shell核心语法【第五篇】函数
为什么使用函数
代码简洁
函数就是把一段代码放到一个单元中
和普通变量的目的一样:a='hello world'封装一段数据,让变量名a具有'hello world'的内容
函数:封装一段代码,让函数名具有一段代码的功能
函数定义
1.Shell和其它语言不太一样,函数里的变量默认是全局变量(函数外部也可以使用),用local来定义为局部变量(函数内才能使用的变量);
2.函数返回值,可以显式增加return语句;如果不加,会将最函数内的最后一条命令运行结果作为返回值。
语法:
函数名() { commands } 或 function 函数名() { commands }
第一个函数
#!/bin/bash hs () { echo "666" } hs # 函数的使用
全局变量
1.默认情况下,函数内可以直接操作全局变量
#!/bin/bash a=1 hs () { echo $a let a=a+2 } hs 3 4 echo $a ###输出 1 3
2.默认情况下,函数内定义的变量也是全局变量
#!/bin/bash hs () { b=2 echo $b } hs echo $b ###输出 2 2
3.如果函数内变量名和外部重名,外部变量数据会被覆盖
#!/bin/bash a=1 hs () { a=2 echo $a let a=a+2 } hs 3 4 echo $a ###输出 2 4
局部变量
1.局部变量和全部变量不重名
#!/bin/bash a = 1 hs () { local b=2 echo $b } hs echo $b # 该行无输出 ###输出 b
2.局部变量和全局变量重名
#!/bin/bash a=1 hs () { local a=2 a=a+1 } hs echo $a ###输出 1
函数参数
更多参数使用见 shell之路【第二篇】shell简介与入门 变量/特殊变量列表
#!/bin/bash hs () { let z=$1+$2 echo "$z" ls lll #return 6 } hs 3 4 echo $?
函数返回值
1.函数中使用return返回时返回值的数据类型必须是数字,echo返回值的数据类型没有限制
2.如果要接收函数的返回值,可以用$(函数 参数)或者$?
return
#!/bin/bash hs () { let z=$1+$2 return 6 } hs 3 4 echo $?
echo
返回数字
#!/bin/bash hs () { let z=$1+$2 echo 6 } res=$(hs 3 4) # 或者res=`hs 3 4` echo $res ###输出 6
返回字符串
#!/bin/bash hs () { let z=$1+$2 echo "false" } res=$(hs 3 4) # 或者res=`hs 3 4` echo $res ###输出 false
谢谢