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
谢谢

浙公网安备 33010602011771号