shell,使用键盘随机输入10个数字,然后执行从小到大的排序。注:不能使用sort

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell,使用键盘随机输入10个数字,然后执行从小到大的排序。注:不能使用sort相关的知识,希望对你有一定的参考价值。

就是 执行脚本后,用键盘随机输入10个数字,然后让这10个数字从小到大的顺序排列。不能使用sort命令。

echo "请输入数字,一行一个"
read a0
i=1
while [ $i -lt 10 ]
do
    j=$((i - 1))
    eval read a$i
    eval tmp=\\$a$i    
    while [ $j -ge 0 ]
    do
        if eval "test \\$a$j -ge $tmp "
        then
           eval a$((j + 1))=\\$a$j   
           j=$((j - 1))
        else
            break
        fi
     done
     
     eval a$((j + 1))=$tmp
     i=$(( i + 1))
done
i=0
while [ $i -lt 10 ]
do
    eval "echo -en  \\$a$i'    '"
    i=$((i + 1))
done
printf "\\n"

参考技术A 用冒泡法已进行比较追问

那如果不使用数组的方式呢?

shell 如何判断用户从键盘输入的变量是否为数字

在bash shell当中其实是没有直接的命令去判断变量是否为一个纯数字的,那么我们就是用间接的方法:

问题描述:

    read -t 30 -p "Please a number: " NUM

    使用read命令接受用户从键盘输入一个变量,保存在变量NUM当中,有时候用户瞎输入一通,或者不输入,这对脚本的执行会有影响,顾提前判断一下,较好也是必要的,那么怎么判断呢?

    方法一:

        将NUM变量做进一步处理:

        STRING=`echo ${NUM}|sed ‘sS^.*[0-9]$SS‘` 将${NUM}交给sed命令处理一下,以任意数字开头任意数字结尾的替换成空,再针对替换后的结果做处理。即

${STRING} 为空则${NUM}为纯数字,否则不是纯数字...


实例演示:

#!/bin/bash

read -t 10 -p "Please input a number: " NUM


STRING=`echo ${NUM} |sed ‘sS^[0-9].*$SS‘ `


[[ -z ${STRING} ]] && echo true || echo false

技术分享

执行如下:

技术分享


    方法二:也是推荐的一种 

        将${NUM}匹配成数字模式 即=~^[0-9]+$

实例演示:

    

#!/bin/bash

read -t 10 -p "Please input a number: " NUM


[[ ${NUM} =~ ^[0-9]+$ ]] && echo true || echo false

 

技术分享


执行结果:


技术分享






本文出自 “linux相关技术” 博客,谢绝转载!

以上是关于shell,使用键盘随机输入10个数字,然后执行从小到大的排序。注:不能使用sort的主要内容,如果未能解决你的问题,请参考以下文章

给定一个数组,数组内容随机,键盘输入一个数据(数字和单字符),查询是不是存在此数据 c语言代码怎么写?

Java分别采用随机生成或从键盘输入的方式,产生10个10以内的整数?

利用JAVA从键盘输入一个任意整数后怎么求各位数字之和?

shell 如何判断用户从键盘输入的变量是否为数字

shell变量

linux题目:编写shell程序,该程序能接收用户从键盘输入的100个整数,然后求出其总和、最大值及最小值