shell脚本问题【附图+高分】

编写脚本文件text4,要求连续通过键盘输入10个数,对这10个数进行从大到小的排序,并显示排序结果。

这是我在VI中编写的

编译时 出现如下结果,


这根本就没有,怎么回事

#!/bin/bash
for((i=1;i<=10;i++))
do
    echo -n "shurudi${i}igeshuzhi: "
    read num[i]
done

for((i=1;i<=10;i++))
do
    for((j=i;j<=10-i;j++))
    do
        if [ ${num[j]} -gt ${num[j+1]} ]
        then
            temp=${num[j]}
            num[j]=${num[j+1]}
            num[j+1]=$temp
        fi
    done
done
echo "da--xiaopaixujieguoruxia:"
for((i=1;i<=10;i++))
do
    echo ${num[i]}
done

修改如上述代码,运行结果如下:

追问

对这10个数进行从大到小的排序.不是从小到大。麻烦你修改一下哦。谢谢了

追答#!/bin/bash
for((i=1;i<=10;i++))
do
    echo -n "shurudi${i}igeshuzhi: "
    read num[i]
done

for((i=1;i<=10;i++))
do
    for((j=1;j<=10-i;j++))
    do
        if [ ${num[j]} -lt ${num[j+1]} ]
        then 
            temp=${num[j]}
            num[j]=${num[j+1]}
            num[j+1]=$temp
        fi
    done
done
echo "da--xiaopaixujieguoruxia:"
for((i=1;i<=10;i++))
do
    echo ${num[i]}
done

刚回家 O(∩_∩)O~   。小小改动一下就行


另外  建议楼主好好看看数据算法,这个典型的冒泡法排序哈

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-28

用sort写一个吧:

#!/bin/bash
#script filename: text4
for i in {1..10}
do
   read -p "shurudi${i}geshuzi: " num[$i]
   str=${str}"\n"${num[$i]}
done
str=${str:2}
echo -e "$str"|sort -r

说明:

    按你的方法用read读入10个数字并连接成一个字符串,数字间以回车符“\n”隔开。

    用${str:2}取得从第3个字符(index为2)开始往后的子串,即剔除开头的前两个字符"\n"(index为0和1)。

    用echo以竖排形式输出用户输入的数字,用sort -r从大到小自动排序。

追问

我要问的在@whudwl里面,发图片发不上去。

追答

read -p 引号里的东西写错了
$这个是取值符号,后面必须跟一个变量。${i}这样是对的。
请仔细对照我上面的代码。

追问

又错了哦。

 

这是我修改的

 

 

编译出现了错误   10怎么不是第一个呢

 

追答

这回是我的错,嘿嘿~~
最后的 sort -r 改为 sort -nr
加一个-n选项,按数字排序。

本回答被提问者和网友采纳
第2个回答  2013-06-28
排序为什么不用sort呢 .追问

我们要求用这个,请问怎么改呢

追答

我和这位@xiehuahere 的想法是一样的...

追问

我按照sort做,如下图,有错误,请指出来

 

运行出现如下结果 

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网