(7.5)Linux Shell脚本的自动化编程之数组变量

1.往函数中传数组

#!/usr/bin/bash
num=(1 2 3 4 5)
echo "${num[@]}" ##输出数组的元素

array()
{
	factorial=1 ##默认是全局变量,在不同函数之间可以使用    若只是在函数内部生效加local
	for i in "$@"
	do
		factorial=$[factorial * $i]
	done
	echo "$factorial"
}
array ${num[@]}  ##or写成:array ${num[*]}## 获取数组的所有元素的值
## $@,$*:表示所有参数
## ./fun_array.sh

-------------------------------------------------------------------------

直接写死的话:
num=(1 2 3 4 5)
array()
{
	factorial=1 ##默认是全局变量,在不同函数之间可以使用    若只是在函数内部生效加local
	for i in ${num[@]}
	do
		factorial=$[factorial * $i]
	done
	echo "$factorial"
}
array 

2.函数返回-输出数组变量

#!/usr/bin/bash
num=(1 2 3)
array()
{
	echo "all parameters: $*"
	local newarray=('echo $*')## or local newarray=($*) 给局部数组赋值
	local i			## $#:代表传入参数的个数
	for((i=0;i<$#;i++))
	do 
		outarray[$i]=$((${newarray[$i]}*5))
	done
	echo "{$outarray[*]}"
}

result=`array ${num[*]}`
echo ${result[*]}

-------------------------------------------------------------------------

num=(1 2 3)
array()
	a=55
	local newarray=()
	local i			## $#:代表传入参数的个数
	local j
	for i in $*
	do 
		outarray[j++]=$[$i*5]
	done
	echo "{$outarray[*]}"##echo可以输出数组,也可以输出字符串
}

result=`array ${num[*]};echo $a` ## 反引号``会在子shell执行
echo ${result[*]}

array ${num[*]} ##会在当前的shell中执行
echo "a: $a"
#函数接受位置参数:$1,$2,...$n
#函数接收数组变量 $* 或 $@
#函数将接收到的所有参数赋值给数组 newarray=($*)
#函数使用参数的格式 $#

发布了510 篇原创文章 · 获赞 134 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/u011436427/article/details/103814637