lv3 嵌入式开发-8 linux shell脚本函数

目录

1 函数的定义

2 函数的调用

3 变量的作用域

 4 练习


1 函数的定义

基本语法:

function name() {
    statements
    [return value]
}

 function是 Shell 中的关键字,专门用来定义函数;  

name是函数名;  

statements是函数要执行的代码,也就是一组语句;  

return value表示函数的返回值,其中 return 是 Shell 关键字,专门用在函数中返回一个值;这一部分可以写也可以不写。 

2 函数的调用

函数调用格式:

方式1:函数的所有标准输出都传递给了主程序的变量

value_name=`function_name  [arg1 arg2 … ]`

方式2: 获取函数的返回的状态

function_name  [arg1  arg2  …  ]
echo   $?

示例

//方式2
#!/bin/bash 

function fun(){
	echo "hello world"
	return 0
}

fun 
echo $?

#ret=`fun`
#echo $ret

//运行结果
linux@linux:~$ ./fun.sh 
hello world
0

//方式1
#!/bin/bash 

function fun(){
	echo "hello world"
	return 0
}

ret=`fun`
echo "***$ret"

//运行结果
linux@linux:~$ ./fun.sh 
***hello world

 示例

#!/bin/bash

function fun(){
	echo "hello world"
	grep "$1" /etc/passwd
	echo $2
	echo $3
	echo $4

	return 1
}


ret=`fun linux 1 5 8`
echo "******$ret"

//运行结果
linux@linux:~$ ./fun1.sh 
******hello world
linux:x:1000:1000:linux,,,:/home/linux:/bin/bash
1
5
8

3 变量的作用域

全局作用域:在脚本的其他任何地方都能够访问该变量。

局部作用域:只能在声明变量的作用域内访问。

声明局部变量的格式:

Local   variable_name =value

示例

#!/bin/bash

function fun(){
	#local val=100
	val=100
	echo $val
	return 1
}

fun
echo "*****$val"

注意局部变量不能进行命令置换

lv3 嵌入式开发-8 linux shell脚本函数_第1张图片

 4 练习


将当前目录下的普通文件,归档到hello.tar中,把以上功能封装到一个函数中;

#!/bin/bash

function hello(){
filename=`ls`
for file in $filename
do
	if [ -f $file ]
	then 
	tar -rf hello.tar $file
fi
done
}

hello


计算下5!(5的阶乘)的结果,并打印出来,把以上功能封装到一个函数中;

#!/bin/bash
function fun(){
i=5
RET=1
while (( i > 1 ))
do
	RET=`expr $RET \* $i `
	i=`expr $i - 1`
done
echo $RET
return 0
}

fun

你可能感兴趣的:(嵌入式开发,linux)