Shell编程学习(5)----数组和函数基本总结

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数组元素的引用
Shell编程学习(5)----数组和函数基本总结_第1张图片
例如:

[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  

你可能感兴趣的:(Linux)