Linux 中数组的使用
数值类型的数组:一对括号表示数组,数组中元素之间使用“空格”来隔开
arr=(1 2 3 4 5)
字符串类型数组:同样,使用一对括号表示数组,其中数组中的元素使用双引号或者单引号包含,同样使用“空格”来隔开
arr=(‘a’ ‘b’ ‘c’)
数组的任何元素都可以用${arr[下标]}来引用,花括号是必须的,以避免和路径扩展冲突。
数组的操作
以数值型数组为例:arr=(1 2 3 4 5)
1.计算数组的长度
len=${#arr[*]}
2、输出所有数组的值
如果 [下标] 是@或是*,它扩展为arr的所有成员。这两种下标只有在双引号中才不同。在双引号中,
n
a
m
e
[
∗
]
扩
展
为
一
个
词
,
由
所
有
数
组
成
员
的
值
组
成
,
用
特
殊
变
量
I
F
S
的
第
一
个
字
符
分
隔
数
组
成
员
;
{name[*]}扩展为一个词,由所有数组成员的值组成, 用特殊变量IFS的第一个字符分隔数组成员;
name[∗]扩展为一个词,由所有数组成员的值组成,用特殊变量IFS的第一个字符分隔数组成员;{arr[@]}将arr的每个成员扩展为一个词。 如果数组没有成员,${arr[@]} 扩展为空串。
3、输出数组的单个元素值(数组下标值从0开始,所以5值为空)
4、在shell脚本中数组和read的结合使用
5、数组结合函数和read一起使用 使用 @ 和 ” @和” @和”@“以及$*
结果:
使用"$*"时
输出:
6、来点新的(鬼知道有啥用)
向函数传递的参数是
a
r
g
1
,
我
们
知
道
不
能
向
函
数
传
递
一
个
数
组
,
而
应
该
是
遍
历
的
数
组
的
值
,
所
以
在
a
r
g
1
赋
值
这
里
,
不
能
写
a
r
g
1
=
(
arg1,我们知道不能向函数传递一个数组,而应该是遍历的数组的值,所以在arg1赋值这里,不能写arg1=(
arg1,我们知道不能向函数传递一个数组,而应该是遍历的数组的值,所以在arg1赋值这里,不能写arg1=({echo
m
y
a
r
r
a
y
[
∗
]
)
)
,
这
样
相
当
于
a
r
g
1
是
一
个
数
组
了
,
而
a
r
g
1
=
{myarray[*]})), 这样相当于arg1是一个数组了,而arg1=
myarray[∗])),这样相当于arg1是一个数组了,而arg1=(echo ${myarray[*]})返回的则是1 2 3 4 5单个的输出值;函数的返回同理,返回的是单个的数值,接受的时候加上(),组成数组
输出:
7、结合read传递参数型(稍微灵活点,更加不知道有什么鬼用,鸟改哈就阔以啦,估计很少会用这些吧)
输出: