S31.shell脚本每日一练

61.输入若干个数值存入数组中,采用冒泡算法进行升序或降序排序

#升序排序
root@ubuntu2004:~# vim maopao.sh
#!/bin/bash
#
#**********************************************************************************************
#Author:        Raymond
#QQ:            88563128
#Date:          2021-10-22
#FileName:      maopao.sh
#URL:           raymond.blog.csdn.net
#Description:   The test script
#Copyright (C): 2021 All rights reserved
#*********************************************************************************************
#!/bin/bash
while :
do
    declare -a NUMS
    read -p "请输入一个数字( e 结束输入,q 退出程序 ):" N
    if [ $N == "q" ];then
        break
    elif [ $N == "e" ];then
        L=${
    
    #NUMS[*]}
        if [ $L == 0 ];then
            echo 没有数字。
        elif [ $L == 1 ];then
            echo 只有一个数字,无需排序。
        else
            for i in `seq $[L-1]`;do
                for j in `seq $i $[L-1]`;do
                    MIN=${NUMS[$i-1]}
                    if [ $MIN -gt ${NUMS[$j]} ];then
                        NUMS[$i-1]=${NUMS[$j]}
                        NUMS[$j]=$MIN
                    fi
                done
            done
            echo 从小到大排序:${NUMS[*]}
            break
        fi
    elif [[ $N =~ ^[0-9]+$ ]];then
        NUMS[$i]=$N
        echo 已输入数字:${NUMS[*]}
        echo 个数: ${
    
    #NUMS[*]}
        let i++
    else
        echo "您输入的不是数字,请重新输入。"
        continue
    fi
done  

root@ubuntu2004:~# bash maopao.sh 
请输入一个数字( e 结束输入,q 退出程序 ):11
已输入数字:11
个数: 1
请输入一个数字( e 结束输入,q 退出程序 ):587
已输入数字:11 587
个数: 2
请输入一个数字( e 结束输入,q 退出程序 ):674
已输入数字:11 587 674
个数: 3
请输入一个数字( e 结束输入,q 退出程序 ):2223
已输入数字:11 587 674 2223
个数: 4
请输入一个数字( e 结束输入,q 退出程序 ):1568
已输入数字:11 587 674 2223 1568
个数: 5
请输入一个数字( e 结束输入,q 退出程序 ):489413
已输入数字:11 587 674 2223 1568 489413
个数: 6
请输入一个数字( e 结束输入,q 退出程序 ):e
从小到大排序:11 587 674 1568 2223 489413

#降序排序
root@ubuntu2004:~# vim maopao2.sh
#!/bin/bash
#
#**********************************************************************************************
#Author:        Raymond
#QQ:            88563128
#Date:          2021-10-22
#FileName:      maopao2.sh
#URL:           raymond.blog.csdn.net
#Description:   The test script
#Copyright (C): 2021 All rights reserved
#*********************************************************************************************
#!/bin/bash
while :
do
    declare -a NUMS
    read -p "请输入一个数字( e 结束输入,q 退出程序 ):" N
    if [ $N == "q" ];then
        break
    elif [ $N == "e" ];then
        L=${
    
    #NUMS[*]}
        if [ $L == 0 ];then
            echo 没有数字。
        elif [ $L == 1 ];then
            echo 只有一个数字,无需排序。
        else
            for i in `seq $[L-1]`;do
                for j in `seq $i $[L-1]`;do
                    MAX=${NUMS[$i-1]}
                    if [ $MAX -lt ${NUMS[$j]} ];then
                        NUMS[$i-1]=${NUMS[$j]}
                        NUMS[$j]=$MAX
                    fi
                done
            done
            echo 从大到小排序:${NUMS[*]}
            break
        fi
    elif [[ $N =~ ^[0-9]+$ ]];then
        NUMS[$i]=$N
        echo 已输入数字:${NUMS[*]}
        echo 个数: ${
    
    #NUMS[*]}
        let i++
    else
        echo "您输入的不是数字,请重新输入。"
        continue
    fi
done

root@ubuntu2004:~# bash maopao2.sh 
请输入一个数字( e 结束输入,q 退出程序 ):55
已输入数字:55
个数: 1
请输入一个数字( e 结束输入,q 退出程序 ):86
已输入数字:55 86
个数: 2
请输入一个数字( e 结束输入,q 退出程序 ):77896
已输入数字:55 86 77896
个数: 3
请输入一个数字( e 结束输入,q 退出程序 ):1548
已输入数字:55 86 77896 1548
个数: 4
请输入一个数字( e 结束输入,q 退出程序 ):1848
已输入数字:55 86 77896 1548 1848
个数: 5
请输入一个数字( e 结束输入,q 退出程序 ):e
从大到小排序:77896 1848 1548 86 55

62.将下图所示,实现转置矩阵matrix.sh

​ 1 2 3 1 4 7

​ 4 5 6 ==> 2 5 8

​ 7 8 9 369

root@ubuntu2004:~# vim matrix.sh
#
#**********************************************************************************************
#Author:        Raymond
#QQ:            88563128
#Date:          2021-10-22
#FileName:      matrix.sh
#URL:           raymond.blog.csdn.net
#Description:   The test script
#Copyright (C): 2021 All rights reserved
#*********************************************************************************************
declare -a matrix
echo 原始:
for i in `seq 3`
do
    for j in `seq 3`
    do
        matrix[$i$j]=$[3*(i-1)+j]
        echo -n ${matrix[$i$j]} ''
    done
    echo
done
echo -e "\n转换:"
for i in `seq 3`
do
    for j in `seq $i`
    do
        x=${matrix[$i$j]}
        matrix[$i$j]=${matrix[$j$i]}
        matrix[$j$i]=$x
     done
done
for i in `seq 3`
do
    for j in `seq 3`
    do
        echo -n ${matrix[$i$j]} ''
    done
    echo
done 

root@ubuntu2004:~# bash matrix.sh 
原始:
1 2 3 
4 5 6 
7 8 9 

转换:
1 4 7 
2 5 8 
3 6 9 

猜你喜欢

转载自blog.csdn.net/qq_25599925/article/details/127243160