语法
函数名() {
函数体
return n
}
function 函数名() {
函数体
return n
}
调用函数
#!/bin/bash
function fun1() {
echo "fuck out"
}
fun1
注意:函数不一定要在最开始定义,但是如果函数在定义前就使用,会报错
#!/bin/bash
fun1
function fun1() {
echo "fuck out"
}
fun1
~
返回值 (返回状态是2说明执行未成功)
#!/bin/bash
function fun1() {
echo "fuck out"
ls -al fuck &> /dev/null
}
fun1
echo "The exit status is :$?"
由于shell状态码最大是255,所以当返回值大于255时会出错
为了返回大于255的数、浮点数和字符串值,最好用函数输出到变量:
#!/bin/bash
function fun1() {
echo "fuck out"
echo 256
}
b=`fun1`
echo $b
echo "The exit status is :$?"
函数传参
#!/bin/bash
function fun1() {
echo "fuck out"
let num=$1*$2*$3
echo $num
}
b=`fun1 1 2 3`
echo "The exit status is :${b}"
全局变量与局部变量(局部变量会替换全局变量)
#!/bin/bash
a=3
function fun1() {
a=4
echo $a
}
fun1
数组传参和返回数组
#!/bin/bash
function fun1() {
local arr=($*)
local i
echo ${arr[@]}
for ((i=0;i<$#;i++))
do
echo ${arr[$i]}
done
}
name=("zhangsan" "lisi" "wangwu")
fun1 ${name[@]}
exit 0
#!/bin/bash
function fun1() {
local arr=($*)
local ret=()
local i
for ((i=0;i<$#;i++))
do
ret[$i]=$(( ${arr[$i]}*5 ))
done
echo ${ret[@]}
}
name=(1 2 3)
a=`fun1 ${name[@]}`
echo ${a[*]}
exit 0