Shell中的函数与变量

1. 语法

方法1:
函数名() {
函数体
return n
}

方法2:
function 函数名() {
函数体
return n
}

2. 调用

#!/bin/bash
function fun1() {
echo “I like westos”
}
fun1 ##调用函数

3. 引用

注意:每次引用函数时,bash会重新回到函数的定义

[root@server ~]# cat function.sh 
#!/bin/bash

function fun1() {
    echo "I am a boy~"
}

count=1
while [ $count -le 5 ]
do
    fun1
    count=$[ $count + 1 ]
done

echo "End of loop"

fun1
echo "End of script"
[root@server ~]# sh function.sh 
I am a boy~
I am a boy~
I am a boy~
I am a boy~
I am a boy~
End of loop
I am a boy~
End of script

4. 返回值

1)默认退出状态码:默认情况下,函数的退出状态码是函数中最后一条命令返回的退出状态码
2)使用return命令
shell使用return命令来退出函数并返回特定的退出状态码

[root@server ~]# cat return.sh 
#!/bin/bash

function db1() {
    read -p "Enter a value:" value
    echo "doubling the value..."
    return $[ $value * 2 ]
}

db1

echo "The new value is $?"
[root@server ~]# sh return.sh 
Enter a value:6
doubling the value...
The new value is 12

函数名必须是唯一的,如果重新定义了函数,新的函数会覆盖旧的函数

函数不能直接从命令行获取脚本的参数值

将函数的输出保存在shell变量中,可以获得任何类型的函数输出,并将其保存到变量中

可以向函数中传递参数函数名会在$0变量中定义,函数命令行上的任何参数都会通过$1, 2 2定义, #来判断传给函数的参数数目

5.全局变量与局部变量

全局变量: 任何地方都生效的变量,默认情况下,脚本主体内定义全局变量,函数内可以用,函数外也可以用

[root@server ~]# vim overall.sh 
#!/bin/bash

function fun1() {
    temp=$[ $value + 5 ]
    result=$[ $temp * 2 ]
}

temp=4
value=6

fun1

echo "The result is $result"
if [ $temp -gt $value ];then
    echo "temp is larger"
else
    echo "temp is smaller"
fi
[root@server ~]# sh overall.sh 
The result is 22
temp is larger

局部变量定义方法: local value

[root@server ~]# vim local.sh 
#!/bin/bash

function fun1() {
    local temp=$[ $value + 5 ]
    result=$[ $temp * 2 ]
}

temp=4
value=6

fun1

echo "The result is $result"
if [ $temp -gt $value ];then
    echo "temp is larger"
else
    echo "temp is smaller"
fi
[root@server ~]# sh local.sh 
The result is 22
temp is smaller

猜你喜欢

转载自blog.csdn.net/gordzafkiel/article/details/87228523