- Shell编程中的函数:
- 伪代码表示:
powershell
function 函数名(){
函数体
}
-
注意事项:
-
1.函数无参数;
-
2.函数无返回值类型;
-
3.
function
可以不写; -
4.函数不被调用,就不会执行;
-
5.函数名不能使用关键字名称,由数字、字母或下划线组成,且数字不能作为函数名的开头;
-
函数的调用:
-
1.无参数时,直接使用函数名即可;
-
2.有参数时,函数名后跟着参数,多个参数用空格分隔;
-
函数内部使用的参数:
-
需要利用位置变量来使用参数;例如:
-
1.
$0
:脚本名 -
2.
$1~$9
:调用函数时,给函数传递的第1至第9个参数 -
十位数及其上:需要添加花括号
{ }
,比如:${88} -
示例代码:
powershell
#!/bin/bash
function print_string(){
for((i=0;i<6;i++))
do
echo "WELCOME TO BEIJING $i"
done
}
print_string
echo "---------------------------------"
function my_mul(){
echo $0
echo $1
echo $2
expr $1 \* $2
}
my_mul 12 12
- 运行结果:
powershell
WELCOME TO BEIJING 0
WELCOME TO BEIJING 1
WELCOME TO BEIJING 2
WELCOME TO BEIJING 3
WELCOME TO BEIJING 4
WELCOME TO BEIJING 5
---------------------------------
g5.sh
12
12
144
- 虚拟机终端传递函数参数:
- 1.若使用执行脚本的命令行参数,调用函数时,传递参数,如示例代码1所述;
- 2.如使用命令行的所有参数,如示例代码2所述,可以采用以下
4种方式
: - i.
$@
:根据单词列表的个数,在终端写多少参数进行传递; - ii.
$*
:同上; - iii.
"$@"
:同上; - iv.
"$*"
:使用命令行的所有参数,在函数中,使用$1
即可; - 示例代码1:
powershell
#!/bin/bash
function my_string(){
echo "HI zhengzhou $1"
echo "HI zhengzhou $2"
echo "HI zhengzhou $3"
echo "HI zhengzhou $4"
echo "HI zhengzhou $5"
echo "HI zhengzhou $6"
echo "HI zhengzhou $7"
echo "HI zhengzhou $8"
echo "HI zhengzhou $9"
echo "HI zhengzhou ${10}"
}
my_string $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}
my_string ${10} $9 $8 $7 $6 $5 $4 $3 $2 $1
- 运行结果1:
powershell
#linux@ubuntu:~$ bash g6.sh 1 2 3 4 5 6 7 8 9 10 10 9 8 7 6 5 4 3 2 1
HI zhengzhou 1
HI zhengzhou 2
HI zhengzhou 3
HI zhengzhou 4
HI zhengzhou 5
HI zhengzhou 6
HI zhengzhou 7
HI zhengzhou 8
HI zhengzhou 9
HI zhengzhou 10
HI zhengzhou 10
HI zhengzhou 9
HI zhengzhou 8
HI zhengzhou 7
HI zhengzhou 6
HI zhengzhou 5
HI zhengzhou 4
HI zhengzhou 3
HI zhengzhou 2
HI zhengzhou 1
- 示例代码2:
powershell
#!/bin/bash
function my_para(){
for i in $1 $2 $3 $4 $5
do
echo $i
done
}
echo "******************************"
my_para $@
echo "******************************"
my_para $*
echo "******************************"
my_para "$@"
echo "******************************"
function my_para1(){
for i in $1
do
echo $i
done
}
my_para "$*"
- 运行结果2:
powershell
******************************
11
22
33
44
55
******************************
11
22
33
44
55
******************************
11
22
33
44
55
******************************
11
22
33
44
55
- 函数的返回值:
- 1.Shell编程中所有的变量默认都是
全局
的,函数内部的变量在函数调用完成后,是可以直接访问的,除了local关键字
修饰的函数内部的变量,其他的变量都可以作为函数运行的结果的方式; - 2.可以使用
return关键字
返回; - 3.可以使用命令置换符获取函数的返回值;
- 示例代码:
powershell
#!/bin/bash
function my_mul(){
KEY1=$(( $1 * $2 ))
}
my_mul 12 12
echo $KEY1
echo "******************************"
function my_sub(){
echo $(( $1 - $2 ))
}
function my_mod(){
echo $(( $1 % $2 ))
}
KEY2=$(my_sub 199 100)
echo $KEY2
echo "******************************"
KEY3=`my_mod 100 3`
echo $KEY3
- 运行结果:
powershell
144
******************************
99
******************************
1
- 一维数组传递函数参数:
- 实例要求:
- 编写脚本,调用自定义函数,传递自定义数组的各个成员的值,并求和;
- 测试代码:
powershell
#!/bin/bash
SUM=0
function my_Sum(){
for i in $1 $2 $3
do
SUM=$(($SUM+$i))
done
echo $SUM
}
A1=([0]="11" [1]="22" [2]="33")
KEY=$(my_Sum "${A1[@]}")
echo $KEY
- 运行结果:
powershell
66