分页: 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?
a.png

Re: bash 如何给数组插入元素

发表于 : 2012-07-02 17:03
woainvzu
只是append了新的数据之后,之前定义的index就失效了,不过有方法解决,1,输出重定向,2,赋值到新的数组。
只要想解决,总会有方法。。。
b.png