回答
您可以使用“排序”工具,它从标准输入读取和lexicographycally排序每一行。
举个例子,你可以检查:
echo -e "1\n6\n2\n3" | sort -n
,输出:
1
2
3
6
只输出每个数字在单独一行,并通过管道将进入排序
你应该提到排序的'-n`选项,因为问题是关于**数字**排序。 – 2011-02-05 23:27:05
你是对的!忘了那个... – mfontanini 2011-02-06 01:00:21
假设你的投入在$a
,$b
,$c
, $d
你可以这样做
printf "%s\n%s\n%s\n%s\n" $a $b $c $d | sort
您需要读取这些值,然后将它们回显到排序程序。
echo -n "Enter 1st number: "
read a junk
echo -n "Enter 2nd number: "
read b junk
echo -n "Enter 3rd number: "
read c junk
echo -n "Enter 4th number: "
read d junk
{ echo $a; echo $b; echo $c; echo $d; } | sort -n
这里唯一的问题是用于在echo
命令后面抑制换行符的符号。有两种符号 - 不同的系统使用不同的符号。较旧的符号是所示的echo -n
。较新的符号是:
echo "Enter Nth number: \c"
您需要使用哪个取决于您的系统。
“垃圾”变量收集输入行上第一个单词之后的任何额外单词。这是一种偏执狂,但意味着如果用户键入'12 abc',那么单字母变量只会得到'12',而不是其他的。该代码不验证用户输入了一个数字。你可以编写一个函数来做到这一点,并使用它4次 - 它可能会采取提示字符串并返回一个数字。
请注意,如果您使用bash
,该read
命令更加强大,可以在read
与echo
符号的非便携式(为除bash
)做了提示,以及,边踩着棘手的问题,而不是符号。除了echo
表示法外,所显示的代码可移植到Bourne shell返回到第7版(或第7版)UNIX(其中echo
不是内置的shell,它使用-n
选项)和衍生产品(Korn,Bash,POSIX, ...)。
另一种方式
read -p "Enter 1st number: " a
read -p "Enter 2nd number: " b
read -p "Enter 3rd number: " c
read -p "Enter 4th number: " d
printf "%s\n" $a $b $c $d | sort
- 1. Unix - 在shell脚本中排序
- 2. Unix shell脚本 - rpadding输入文件
- 3. Unix Shell脚本 - 将$输入文件
- 4. 在shell脚本中触发UNIX序列
- 5. Unix shell脚本
- 6. UNIX在shell脚本中自动输入密码
- 7. UNIX shell脚本:UDV
- 8. shell脚本中的Unix substr?
- 9. Linux/Unix shell脚本中的冒泡排序
- 10. UNIX脚本中的shell脚本错误
- 11. 读入目录,unix shell脚本
- 12. bash脚本shell输入
- 13. ## * /在UNIX Shell脚本中使用
- 14. UNIX shell脚本 - 保存输入文件名
- 15. Bash Unix Shell脚本接受输入并设置系统变量
- 16. 关于Unix shell脚本
- 17. Unix Shell脚本函数
- 18. unix shell脚本错误
- 19. UNIX shell脚本while循环
- 20. 关于UNIX Shell脚本
- 21. 没有从UNIX shell脚本
- 22. Shell脚本UNIX提示
- 23. unix bash shell脚本写作
- 24. 在unix shell脚本中发送输出时发生mailx问题
- 25. 简单了解UNIX和UNIX shell脚本!
- 26. 我们可以在perl脚本中输入shell脚本吗?
- 27. 需要在NCFTP shell脚本上输入
- 28. 如何在没有CronJob的情况下安排Unix Shell脚本
- 29. 在Unix shell中调用控制脚本的子脚本
- 30. 存储()在UNIX shell脚本的变量
气味像功课 – 2011-02-06 00:41:08
是写一个简单的排序分配程序,或者你可以使用'sort`效用?你试过什么了?尽管问这个问题有点晚。 – 2011-02-06 00:47:32
谢谢你,是的丹尼斯我坚持这个作业和一种困惑,但现在它的罚款:-) – Andy 2011-02-06 11:00:59