bash 如何给数组插入元素
- 自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
bash 如何给数组插入元素
实际上我需要的是一个集合容器。
- 枫叶饭团
- 帖子: 14683
- 注册时间: 2010-06-16 1:05
- 系统: Mac OS X
- 来自: Tencent
- 联系:
- 自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
Re: bash 如何给数组插入元素
下标都不知道,如何赋值!
- 枫叶饭团
- 帖子: 14683
- 注册时间: 2010-06-16 1:05
- 系统: Mac OS X
- 来自: Tencent
- 联系:
Re: bash 如何给数组插入元素
不知道有么有判断数组长度的函数
- 自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
Re: bash 如何给数组插入元素
有取长度的方法,但也不行。bash 的数组下标可非顺序,简直就是散列表。
这是我想到的唯一方法了!很蛋疼的方法!
代码: 全选
lst=("${lst[@]}" "$new")
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
Re: bash 如何给数组插入元素
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
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
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
- 自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
Re: bash 如何给数组插入元素
fnan, 如果下标非顺序必死!
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
- 自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
Re: bash 如何给数组插入元素
说错了,应该是说非连续。
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
-
- 帖子: 100
- 注册时间: 2010-12-27 22:44
Re: bash 如何给数组插入元素
非连续的也可以输出,用${!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
上次由 woainvzu 在 2012-06-20 2:55,总共编辑 1 次。
-
- 帖子: 100
- 注册时间: 2010-12-27 22:44
- 自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
Re: bash 如何给数组插入元素
死结,不说了,bash 太低级!
array=([0]='a' [17]='b' [19]='c')
根本无法保证插入后 array[19] 是合法的且其值是 c!
array=([0]='a' [17]='b' [19]='c')
根本无法保证插入后 array[19] 是合法的且其值是 c!
-
- 帖子: 100
- 注册时间: 2010-12-27 22:44
Re: bash 如何给数组插入元素
why not?自由建客 写了:死结,不说了,bash 太低级!
array=([0]='a' [17]='b' [19]='c')
根本无法保证插入后 array[19] 是合法的且其值是 c!
-
- 帖子: 100
- 注册时间: 2010-12-27 22:44
Re: bash 如何给数组插入元素
只是append了新的数据之后,之前定义的index就失效了,不过有方法解决,1,输出重定向,2,赋值到新的数组。
只要想解决,总会有方法。。。
只要想解决,总会有方法。。。