数组问题
时间:2011-07-02
来源:互联网
shell里 数组的分隔符是空格,如果数组里的内容包含空格怎么办?
比如说我从一个文件中读取一行,让他等于变量key
key=signal 14#signal 16#signal 17.....
怎么把key变成数组得到一下结果,结果是用于FOR循环的。
key[1]=signal 14
key[2]=signal 16
.......
我用了一下split,总是出不来我要的结果, 请大大忙我。谢谢
比如说我从一个文件中读取一行,让他等于变量key
key=signal 14#signal 16#signal 17.....
怎么把key变成数组得到一下结果,结果是用于FOR循环的。
key[1]=signal 14
key[2]=signal 16
.......
我用了一下split,总是出不来我要的结果, 请大大忙我。谢谢
作者: zealveryme 发布时间: 2011-07-02
本帖最后由 yinyuemi 于 2011-07-02 11:08 编辑
回复 zealveryme
一种办法:
复制代码
回复 zealveryme
一种办法:
- eval $(echo 'key=signal 14#signal 16#signal 17' |awk '{l=split($0,key,/key=|#/);for(i=2;i<=l;i++)print "key["i-1"]=\""key[i]"\""}')
-
- i=0;while [[ $i -lt ${#key[@]} ]]; do ((i++)); echo "key["$i"]="${key[$i]}; done
- key[1]=signal 14
- key[2]=signal 16
- key[3]=signal 17
作者: yinyuemi 发布时间: 2011-07-02
太强了,看懂有些费劲,但是确实解决我的问题。
能再解释一下 ${#key[@]} 是表示数组长度吗?和为什么要用eval吗?
还有一个基础问题
a="aaa bbb ccc"
echo $a[1]
以上两句的结果为什么空,echo不出值?
能再解释一下 ${#key[@]} 是表示数组长度吗?和为什么要用eval吗?
还有一个基础问题
a="aaa bbb ccc"
echo $a[1]
以上两句的结果为什么空,echo不出值?
作者: zealveryme 发布时间: 2011-07-02
回复 zealveryme
${#array[@]} 数组长度
eval 执行awk打印的结果如:
复制代码
这样就"aaa"便赋值给数组array。
另外,也可以这样:
复制代码
${#array[@]} 数组长度
eval 执行awk打印的结果如:
- eval array[1]="aaa"
另外,也可以这样:
- $ a=("aaa" "bbb ccc")
-
- echo ${a[0]}
- aaa
-
- echo ${a[1]}
- bbb ccc
作者: yinyuemi 发布时间: 2011-07-02
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28