shell——数组

Shell数组

应用场景包括:
获取数组长度
获取元素长度
遍历元素
元素切片
元素替换
元素删除

数组定义方法

方法一:数组名=(vlaue0 value1 value2 …)
方法二:数组名=([0]=value[1]=value[2]=value…)
方法三:
列表名=“value 0 value1 value 2…”
数组名=($列表名)
方法四:
数组名[0]=“value”
数组名[1]=“value”
数组名[2]=“value”
数组包括的数据类型
数值类型
字符类型
使用“”或’'定义

shell数组操作

获取数组

${数组名[@/* ]}
获取数组长度
${数组名#[@/* ]}
读取某下标赋值
${数组名[下标]}
数组遍历

数组切片

${数组名[@/* ]:起始位置:长度}
数组的替换
${数组名[@/* ]/查找字符/替换字符}
数组删除
unset

shell脚本调试

echo命令
bash命令
命令语法
sh [-nvx]脚本名
-n:不会执行该脚本,仅查询脚本语法是否有问题,如果没有语法问题就不会显示任何内容,如果有问题会提示报错。
-v:在执行脚本时,先将脚本的内容输出到屏幕上然后有错误,也会给出错误提示。
-x:将执行的脚本内容输出到屏幕上,这个是对调试很有用的参数。
set命令
set -x:开启调节模式
set +x:关闭调节模式# 步骤

冒泡排序

在这里插入图片描述

1、获取数组个数

${#数组名[*]}
获取某个数组值的大小
${数组名[下标值]}

2、shell里面给定值的比较

[root@server1 ~]# vim maopao.sh
#!/bin/bash
#冒泡排序
score=(23 99 223 49 21 12 69 36 15 16 96)
for ((i=1;i<${#score[*]};i++))
do
        for ((j=0;j<${#score[*]}-$i;j++))
                do
                if [ ${score[j]} -gt ${score[(($j+1))]} ]
                then temp=${score[j]}
                        score[j]=${score[(($j+1))]}
                        score[(($j+1))]=$temp
                fi
                done
done
echo ${score[*]}[root@server1 ~]# chmod +x maopao.sh
[root@server1 ~]# ./maopao.sh 
12 15 16 21 23 36 49 69 96 99 223

3、键盘输入数组值

[root@server1 ~]# vim maopao1.sh
#!/bin/bash
#键盘输入数组值并排序
k=0
while true 
do
read -p "确定输入数值:" do
        if [ $do == "no" ]
        then break
        fi
        read -p "请输入第$(($k+1))个数值" key
                score[$k]=$key
                let k++
done
for ((i=1;i<${#score[*]};i++))
        do
        for ((j=0;j< ${#score[*]}-$i;j++))
                do
                if [ ${score[j]} -gt ${score[j+1]} ]
                then temp=${score[j]}
                        score[j]=${score[j+1]}
                        score[j+1]=$temp
                fi
        done
done
echo ${score[*]}
[root@server1 ~]# chmod +x maopao1.sh
[root@server1 ~]# ./maopao1.sh 
确定输入数值:y
请输入第1个数值6
确定输入数值:y
请输入第2个数值3
确定输入数值:y
请输入第3个数值36
确定输入数值:y
请输入第4个数值42
确定输入数值:y
请输入第5个数值69
确定输入数值:y
请输入第6个数值65
确定输入数值:no
3 6 36 42 65 69


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值