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语言代码怎么写?