Loading... <p style="text-align: center"><strong>Bash Shell<span style="font-family: 宋体">之数组简介</span></strong></p> <p style="text-align: center"><strong> </strong></p> <h2 style="margin: 13px 0px 0px"><span style="font-family: 宋体">一、数组基本概念</span></h2> <p style="margin: 0px 0px 13px"><span style="font-family: Calibri"> </span><span style="font-family: 宋体">数组是内存中的存储空间,连续的多个存储单元;</span><span style="font-family: Calibri">bash</span>中只支持一维数组,支持稀疏格式 ,参数个数没有限制。</p> <h2 style="margin: 13px 0px 0px"><span style="font-family: 宋体">二、数组基本语法格式</span></h2> <h3 style="margin: 13px 0px 0px"><span style="font-family: Calibri"> 1</span><span style="font-family: 宋体">、声明一个数组</span></h3> <p style="margin: 0px 0px 13px 30px"><span style="font-family: Calibri"> declare -a array </span><span style="font-family: 宋体">其实不用声明,按数组方式直接赋值给变量即可</span></p> <h3 style="margin: 13px 0px 0px"><span style="font-family: Calibri"> 2</span><span style="font-family: 宋体">、表示方式:</span>数组名+索引</h3> <p style="margin: 0px 0px 13px"><span style="font-family: Calibri"> </span><span style="font-family: 宋体">索引的表示方式:数字索引:</span><span style="font-family: Calibri">a[index]</span><span style="font-family: 宋体">。例如:</span><span style="font-family: Calibri">a[0], a[1]<br /> bash 4.0</span><span style="font-family: 宋体">以后支持关联数组</span><span style="font-family: Calibri">.</span><span style="font-family: 宋体">用</span><span style="font-family: Calibri">declare -A</span><span style="font-family: 宋体">指明是关联数组例如:</span><span style="font-family: Calibri">a[hello], a[hi]<br /> </span><span style="font-family: 宋体">在引用是必须使用</span><span style="font-family: Calibri">{}</span><span style="font-family: 宋体">。例如</span><span style="font-family: Calibri">${a[0]}</span></p> <h3 style="margin: 13px 0px 0px"><span style="font-family: Calibri"> 3</span><span style="font-family: 宋体">、数组赋值:</span></h3> <p style="margin: 0px 0px 13px"><span style="font-family: Calibri"> </span><span style="font-family: 宋体">一次对多个元素赋值。例如:</span><span style="font-family: Calibri">a=(red blue yellow green)</span></p> <p style="margin: 0px 0px 13px"><span style="font-family: Calibri"> </span><span style="font-family: 宋体">按索引进行赋值。例如:</span><span style="font-family: Calibri">a=([0]=green [3]=red [2]=blue [6]=yellow)</span></p> <p style="margin: 0px 0px 13px"><span style="font-family: Calibri"> </span><span style="font-family: 宋体">命令替换赋值。例如:</span><span style="font-family: Calibri">logs=(/var/log/*.log)</span></p> <p style="margin: 0px 0px 13px"><span style="font-family: Calibri"> </span><span style="font-family: 宋体">用户输入赋值。例如:</span><span style="font-family: Calibri">read -a c</span><span style="font-family: 宋体">,赋值后用</span><span style="font-family: Calibri">echo ${c[0]}</span><span style="font-family: 宋体">查看</span></p> <h3 style="margin: 13px 0px 0px"><span style="font-family: Calibri"> 4</span><span style="font-family: 宋体">、数组访问</span></h3> <p style="margin: 0px 0px 13px"><span style="font-family: Calibri"> echo ${#a[i]}</span><span style="font-family: 宋体">获取这个数组中第</span><span style="font-family: Calibri">i</span><span style="font-family: 宋体">个小标的元素值</span></p> <p style="margin: 0px 0px 13px"><span style="font-family: Calibri"> echo ${#a[*]}</span><span style="font-family: 宋体">或</span><span style="font-family: Calibri">echo ${#a[@]} :</span><span style="font-family: 宋体">获取这个数组中数组元素的总个数。</span> </p> <h3 style="margin: 13px 0px 0px"><span style="font-family: Calibri"> 5</span><span style="font-family: 宋体">、从数组中挑选元素</span></h3> <p style="margin: 0px 0px 13px"><span style="font-family: Calibri"> ${ARRAY[@]}: </span><span style="font-family: 宋体">取出所有元素。例如:</span><span style="font-family: Calibri">echo ${a[@]} <br /> ${ARRAY[@]:offset:number}</span><span style="font-family: 宋体">。例如:</span><span style="font-family: Calibri">echo ${a[@]:1:1}<br /> offset: </span><span style="font-family: 宋体">偏移的元素个数</span><br /><span style="font-family: Calibri"> number: </span><span style="font-family: 宋体">取出的元素的个数</span><span style="font-family: Calibri"> <br /> ${ARRAY[@]:offset}</span><span style="font-family: 宋体">:取出偏移量后的所有元素</span><span style="font-family: Calibri"> </span><span style="font-family: 宋体">。例如:</span><span style="font-family: Calibri">echo ${a[@]:1}</span></p> <h3 style="margin: 13px 0px 0px">6<span style="font-family: 宋体">、向数组复制和追加元素:</span></h3> <p style="margin: 0px 0px 13px"><span style="font-family: Calibri"> </span><span style="font-family: 宋体">把数组中的个数当做该数组的下标。</span><br /><span style="font-family: Calibri"> declare -a mylogs<br /> tmp=${#mylogs[@]}<br /> mylogs[$tmp]="dasd"<br /> </span><span style="font-family: 宋体">删除数组用的元素:</span><span style="font-family: Calibri">unset a[i] </span><span style="font-family: 宋体">删除所有原始</span><span style="font-family: Calibri">unset a[*] </span><span style="font-family: 宋体">或</span><span style="font-family: Calibri"> unset a[@]</span></p> <p style="margin: 0px 0px 13px"><span style="font-family: Calibri"> </span><span style="font-family: 宋体">数组复制:</span><span style="font-family: Calibri">b[$index]=${a[$i]}</span></p> <h2 style="margin: 13px 0px 0px"><span style="font-family: 宋体">三、实例解析:</span></h2> <p style="margin: 0px 0px 13px"><span style="font-family: Calibri"> 1</span><span style="font-family: 宋体">、写一个脚本,生成</span><span style="font-family: Calibri">10</span><span style="font-family: 宋体">个随机数,保存至数组中;而后显示数组下标为偶数的元素(或者将偶数元素赋值给一个新的数组并显示);</span></p> <p style="margin: 0px 0px 13px"><span style="font-family: Calibri"> <img title="1431270424712520.png" alt="1.png" src="//cto.wang/usr/uploads/2016/07/20160703160305-13.png" /></span></p> <p style="margin: 0px 0px 13px"><span style="font-family: Calibri"> <img title="1431270455713246.png" alt="2.png" src="//cto.wang/usr/uploads/2016/07/20160703160305-42.png" /></span></p> <p style="margin: 0px 0px 13px"><span style="font-family: Calibri"> 2</span><span style="font-family: 宋体">、</span><span style="font-family: Calibri"> </span><span style="font-family: 宋体">生成</span><span style="font-family: Calibri">10</span><span style="font-family: 宋体">个随机数,升序排序</span></p> <p style="margin: 0px 0px 13px"><span style="font-family: Calibri"> <img title="1431270475229401.png" alt="3.png" src="//cto.wang/usr/uploads/2016/07/20160703160305-26.png" /></span></p> <p style="margin: 0px 0px 13px"><span style="font-family: Calibri"> <img title="1431270482228231.png" alt="4.png" src="//cto.wang/usr/uploads/2016/07/20160703160305-23.png" /></span></p> <p style="margin: 0px 0px 13px"><span style="font-family: Calibri"> </span><span style="font-family: 宋体">注意:在</span><span style="font-family: Calibri">Bash Shell</span><span style="font-family: 宋体">数组互换时要注意其格式;赋值给</span><span style="font-family: Calibri">temp</span><span style="font-family: 宋体">和</span><span style="font-family: Calibri">a[$i]</span><span style="font-family: 宋体">的方式不一样;</span></p> <p style="margin: 0px 0px 13px"><span style="font-family: Calibri"> 3</span><span style="font-family: 宋体">、打印九九乘法表</span></p> <p style="margin: 0px 0px 13px"><span style="font-family: Calibri"> <img title="1431270489109374.png" alt="5.png" src="//cto.wang/usr/uploads/2016/07/20160703160305-10.png" /></span></p> <p style="margin: 0px 0px 13px"><span style="font-family: Calibri"> <img title="1431270494798085.png" alt="6.png" src="//cto.wang/usr/uploads/2016/07/20160703160305-78.png" /></span></p> <p style="margin: 0px 0px 13px"><span style="font-family: Calibri"> </span></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信