Loading... <p><strong>bash仅支持一维数组,类型声明:</strong></p> <p>declare -i : 表示数值</p> <p>declare -a :表示普通数组(默认,可不用声明类型)</p> <p>declare -A :表示关联数组(必须声明类型,<span style="font-family:微软雅黑">bash需4.0以上版本才支持,可通过bash –version查看版本</span><span style="font-size: 10.5pt;line-height: 1.5">)</span></p> <p><span style="font-size: 10.5pt;line-height: 1.5"><br /></span></p> <p><strong>一、普通数组(用数字为下标)</strong></p> <p><strong>1.1数组赋值(修改值)方式</strong></p> <p>a).单个元素赋值</p> <pre class="brush:bash;toolbar:false">a[0]=1 a[2]=2</pre> <p>b).一次对全部元素赋值</p> <pre class="brush:bash;toolbar:false">a=(1 2 3)</pre> <p>c).按索引进行赋值</p> <pre class="brush:bash;toolbar:false">a=([0]=apple [1]=banana [2]=orange)</pre> <p>d).命令替换</p> <pre class="brush:bash;toolbar:false">a=(/var/log/*.log)</pre> <p><span style="font-family:微软雅黑">e).</span><span style="font-size: 10.5pt;line-height: 1.5">用户输入</span></p> <pre class="brush:bash;toolbar:false">read -a array</pre> <p><strong>1.2数组长度</strong> <strong> <br /></strong></p> <pre class="brush:bash;toolbar:false">echo ${#array[@]} 数组的长度(建议查看方式) echo ${#array[*]} 数组的长度</pre> <p>用以下示例来区分两者区别:</p> <p><img alt="1.png" src="//cto.wang/usr/uploads/2016/07/20160703180433-2.png" title="1439566573130482.png" /></p> <p>执行结果如下($*用双引号引起来后,所有的参数是一个串,查看所有元素时建议用$@):</p> <p><img alt="2.png" src="//cto.wang/usr/uploads/2016/07/20160703180433-75.png" title="1439566615325740.png" /></p> <p><strong>1.3其它常用</strong></p> <pre class="brush:bash;toolbar:false">echo {array[2]} 下标为2的元素值(元素从0开始计数) array2=(${array1[@]}) 数组复制 echo ${!array[@]} 获取所有的下标</pre> <p><span style="font-size: 10.5pt;line-height: 1.5"><strong><br /></strong></span></p> <p><span style="line-height: 1.5;font-size: 16px"><strong>二、关联数组(可用非数字字符做下标,普通数组功能在关联数组下都可实现)</strong></span></p> <p>关联数组需事先声明,方法为:declare -A array</p> <p>示例:</p> <pre class="brush:bash;toolbar:false">[root@localhost ~]# declare -A test [root@localhost ~]# test=([apple]=a [banana]=b [orange]=o) [root@localhost ~]# echo ${test[@]} o a b [root@localhost ~]# echo ${!test[@]} orange apple banana [root@localhost ~]#</pre> <p><strong><br /></strong></p> <p><strong><span style="font-size: 16px;font-family: arial,helvetica,sans-serif">三、数组切片</span></strong><span style="font-size: 16px"><strong><br /></strong></span></p> <pre class="brush:bash;toolbar:false">${array[@]:offset:number} offset: 偏移的元素个数 number: 取出的元素的个数 ${array[@]:offset} 取出偏移量后的所有元素 ${array[@]} 取出所有元素</pre> <p>示例:</p> <pre class="brush:bash;toolbar:false">[root@localhost ~]# array=(1 2 3) [root@localhost ~]# echo ${array[@]} 1 2 3 [root@localhost ~]# echo ${array[@]:1} 2 3 [root@localhost ~]# echo ${array[@]:1:1} 2</pre> <p><span style="font-size: 10.5pt;line-height: 1.5"><strong><br /></strong></span></p> <p><span style="line-height: 1.5;font-size: 16px"><strong>四、删除数组元素</strong></span></p> <p><span style="font-size: 10.5pt;line-height: 1.5">unset ARRAY[index]</span></p> <p>示例:</p> <pre class="brush:bash;toolbar:false">[root@localhost ~]# echo ${array[@]} 1 2 3 [root@localhost ~]# unset array[1] [root@localhost ~]# echo ${array[@]} 1 3</pre> <p><strong><br /></strong></p> <p><strong>五、综合示例</strong></p> <p>示例1:<span style="font-size: 10.5pt;line-height: 1.5">写一个脚本,生成10个随机数,保存至数组中;而后显示数组下标为偶数的元素;</span></p> <p><span style="font-size: 10.5pt;line-height: 1.5">方法一:</span></p> <p><img alt="3.png" src="//cto.wang/usr/uploads/2016/07/20160703180433-75-1.png" title="1439568014704304.png" /></p> <p>方法二:</p> <p><img alt="4.png" src="//cto.wang/usr/uploads/2016/07/20160703180433-59.png" title="1439568078432921.png" /></p> <p>示例2:复制一个数组中下标为偶数的元素至一个新数组中</p> <p><img alt="5.png" src="//cto.wang/usr/uploads/2016/07/20160703180433-38.png" title="1439568235464283.png" /></p> <p>示例3:生成10个随机数,升序排序</p> <p><img alt="6.png" src="//cto.wang/usr/uploads/2016/07/20160703180433-10.png" title="1439568268669534.png" /></p> <p>示例4:打印九九乘法表</p> <p><img alt="7.png" src="//cto.wang/usr/uploads/2016/07/20160703180433-72.png" title="1439568293927879.png" /></p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信