1、数组
1.1 数组的声明
可以使用declare、local、readonly等各种语句声明数组变量,也可以直接赋值的方法声明一个数组。
常用格式:name=(value1 … valueN)
value1形如“[[subscript]=]string”。
下标是可选的,若给出,则给数组中相应的位置赋值;否 则将给数组中上次赋值位置的下一个位置赋值
例如:
[root@localhost root]# ns=(max san [6]=zhang [25]=wang)
[root@localhost root]# echo ${ns[0]}
max
[root@localhost root]# echo ${ns[6]}
zhang
1.2数组元素的引用
例如:
[root@localhost root]# a=(“${ns[@]}”)
[root@localhost root]# echo ${a[0]}
max
[root@localhost root]# b=(“${ns[*]}”)
[root@localhost root]# echo ${b[0]}
max san zhang wang
注意:给数组赋值时,等号右边要使用圆括号。
例子:demo_num_array程序
# 将数字的总和放在数值变量sum中,从0开始。读下一个数组的值并加到sum。
# 当读完所有的元素,停止并显示结果。
#!/bin/bash
# 将斐波纳契数列中的数初始化到Fibonacci 数组中
declare -a Fibonacci=( 0 1 1 2 3 5 8 13 21 34 )
size=${#Fibonacci[*]} # Fibonacci数组的大小作为字符串
index=1 # 数组索引初始化指向第二个元素
sum=0 # sum 初始化为0
next=0 # 用来存储下一个数组元素
while [ $index -lt $size ]
do
next=$(( ${Fibonacci[$index]} )) #将下一个值存为整数
sum=$((sum + next)) # 更新sum变量
index=$((index + 1)) # 将数组索引加1
done
#显示最后的和
echo "The sum of the given ${#Fibonacci[*]} numbers is $((sum))."
exit 0
2、函数
2.1函数格式如下:
函数名( )
{
函数体
}
函数调用方式为:
函数名 参数列表
可以使用local关键字在shell函数中声明局部变量,局部变量将局限在函数的作用范围内
例:
#!/bin/bash
sample_txt="global varible"
foo() {
local sample_txt="local varible"
echo "Function foo is executing"
echo $sample_txt
}
echo "script starting"
foo
echo $sample_txt
exit 0
#运行结果:
[root@localhost root]# demo_fun2
script starting
Function foo is executing
local varible
global varible
编写一函数add求两个数的和,这两个数用位置参数传入,最后输出结果。
#!/bin/sh
add( )
{
a=$1
b=$2
z=`expr $a + $b`
echo "The sum is $z"
}
add $1 $2