shell数组冒泡法与传参

冒泡法:
#!/bin/bash
#f=`cat /root/444.txt`
arry=($f)      #(3 2 5 8 4)     #创建一个数组
a=${#arry[*]}    #给a赋值数组的长度
for ((i=1; i<$a; i++))   #for循环i从1开始;i小于$a;i一个个加  (变化的次数是a-1)
do  #开始for循环
  for ((j=0; j<$a-$i; j++))    #嵌套for循环锁引号从0号为位开始(0是第一个数组数值)
j小于$a-$i是比较的轮数比一轮少一轮,j一个个加
  do #开始for循环
    if [ ${arry[$j]} -lt ${arry[$[$j + 1]]} ];then   #如果索引号第一个数值大于第二个数值的时候输出
    temp=${arry[$j]}    #第一个数值备份为temp
    arry[$j]=${arry[$[$j+1]]}   #把第二个数值移到第一个数值上
    arry[$[$j+1]]=$temp   #第二个数值变为之前备份的第一个数值
    fi    #结束if循环
  done   #结束内嵌for循环
done   #结束for循环
echo ${arry[*]}   #输出数组里的锁引号

 

传递数组参数从(函数到数组)
#!/bin/bash
g=(1 2 3 5 6 7 8 9 )    #原数组    
echo "原始的数组的值为${g[*]}"     #输出原数组的所有索引号
a=${g[*]}    #a赋值为原数组里所有索引号
test(){       #函数开始
        newg=($(echo $@))     #创建新数组存在包含空格的元素时会按空格元素拆分成多个
        a=$[ ${#newg[*]} ]    #给a赋值为新数组的索引号长度
        for ((i=0; i<$a; i++))   #for循环i索引号从0开始(0相当于1)i小于索引号长度,i一个个加
        do   #开始循环
        b=$[ ${newg[$i]}*6 ]    #给b赋值新创建的数组所有索引号x6
        newg[$i]=$b    #新建数组等于$b
        done   #结束循环
        echo ${newg[*]}   #输出新建数组的所有索引号
}  #函数结束
d=(`test $a`)   #d赋值调用函数合原原引号
echo "新建组的值为${d[*]}"   #输出新建组的值#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值