分页: 1 / 2
bash 如何给数组插入元素
发表于 : 2012-03-11 11:55
由 自由建客
实际上我需要的是一个集合容器。
Re: bash 如何给数组插入元素
发表于 : 2012-03-11 11:57
由 枫叶饭团
直接赋值就行了吧。。。
Re: bash 如何给数组插入元素
发表于 : 2012-03-11 12:00
由 自由建客
下标都不知道,如何赋值!
Re: bash 如何给数组插入元素
发表于 : 2012-03-11 12:36
由 枫叶饭团
不知道有么有判断数组长度的函数
Re: bash 如何给数组插入元素
发表于 : 2012-03-11 14:04
由 自由建客
有取长度的方法,但也不行。bash 的数组下标可非顺序,简直就是散列表。
代码: 全选
lst=("${lst[@]}" "$new")
这是我想到的唯一方法了!很蛋疼的方法!
Re: bash 如何给数组插入元素
发表于 : 2012-03-11 19:43
由 fnan
kose-1@kose-1-desktop:~$ a=('a' 'b' 'hello' 'c')
kose-1@kose-1-desktop:~$ a[${#a[@]}]="world"
kose-1@kose-1-desktop:~$ echo ${a[@]}
a b hello c world
kose-1@kose-1-desktop:~$ a=('a' 'b' 'hello' 'c')
kose-1@kose-1-desktop:~$ a=("${a[@]:0:3}" "world" "${a[@]:3}")
kose-1@kose-1-desktop:~$ echo ${a[@]}
a b hello world c
Re: bash 如何给数组插入元素
发表于 : 2012-03-11 20:10
由 自由建客
fnan, 如果下标非顺序必死!
Re: bash 如何给数组插入元素
发表于 : 2012-03-12 19:21
由 fnan
bash下标是有顺序的。
Re: bash 如何给数组插入元素
发表于 : 2012-03-12 19:41
由 自由建客
说错了,应该是说非连续。
Re: bash 如何给数组插入元素
发表于 : 2012-03-12 20:58
由 fnan
具体问题要具体对应的,不如给个具体例子看看那里不合适。
Re: bash 如何给数组插入元素
发表于 : 2012-06-20 2:35
由 woainvzu
自由建客 写了:说错了,应该是说非连续。
非连续的也可以输出,用
${!array[@]}作为循环条件,前提是bash 3.0版本以上,例如:
代码: 全选
array=([0]='a' [3]='b' [5]='c')
for i in "${!array[@]}"
do
echo "$i -> ${array[$i]}"
done
结果为:
代码: 全选
@_@ 02:29:56 Shell $ ./array_echo.sh
0 -> a
3 -> b
5 -> c
Re: bash 如何给数组插入元素
发表于 : 2012-06-20 2:40
由 woainvzu
枫叶饭团 写了:不知道有么有判断数组长度的函数
用
${#array[@]} 或
${#array[*]}[/b],例如:
代码: 全选
array=([0]='a' [1]='b' [2]='c')
echo ${#array[@]}
echo ${#array[*]}
结果:
代码: 全选
@_@ 02:37:25 Shell $ ./array_echo.sh
3
3
Re: bash 如何给数组插入元素
发表于 : 2012-06-20 12:25
由 自由建客
死结,不说了,bash 太低级!
array=([0]='a' [17]='b' [19]='c')
根本无法保证插入后 array[19] 是合法的且其值是 c!
Re: bash 如何给数组插入元素
发表于 : 2012-07-02 16:58
由 woainvzu
自由建客 写了:死结,不说了,bash 太低级!
array=([0]='a' [17]='b' [19]='c')
根本无法保证插入后 array[19] 是合法的且其值是 c!
why not?
Re: bash 如何给数组插入元素
发表于 : 2012-07-02 17:03
由 woainvzu
只是append了新的数据之后,之前定义的index就失效了,不过有方法解决,1,输出重定向,2,赋值到新的数组。
只要想解决,总会有方法。。。