回答
您可以使用「排序」工具,它從標準輸入讀取和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腳本 - 將$輸入文件
- 3. shell腳本在UNIX
- 4. 在shell腳本中觸發UNIX序列
- 5. Unix Shell腳本
- 6. Shell腳本UNIX
- 7. Unix shell腳本
- 8. UNIX在shell腳本中自動輸入密碼
- 9. Unix shell腳本 - mailsend
- 10. UNIX shell腳本:UDV
- 11. Unix Shell腳本(KSH)
- 12. 的Unix Shell腳本
- 13. shell腳本中的Unix substr?
- 14. 在單UNIX Shell腳本
- 15. 無法在UNIX Shell腳本
- 16. Linux/Unix shell腳本中的冒泡排序
- 17. UNIX腳本中的shell腳本錯誤
- 18. Unix Shell腳本的非預期輸出
- 19. 讀入目錄,unix shell腳本
- 20. 對文本進行排序(unix/shell)
- 21. 標準輸入shell腳本
- 22. 在Unix Shell腳本中分配chmod權限並排除文件
- 23. ## * /在UNIX Shell腳本中使用
- 24. bash腳本shell輸入
- 25. Shell腳本整數輸入
- 26. SAS程序調用UNIX Bash Shell腳本
- 27. 的Linux Shell腳本輸入
- 28. Bash Unix Shell腳本接受輸入並設置系統變量
- 29. UNIX shell腳本 - 保存輸入文件名
- 30. 從簡單的HTML按鈕輸入運行Unix shell腳本
氣味像功課 – 2011-02-06 00:41:08
是寫一個簡單的排序分配程序,或者你可以使用'sort`效用?你試過什麼了?儘管問這個問題有點晚。 – 2011-02-06 00:47:32
謝謝你,是的丹尼斯我堅持這個作業和一種困惑,但現在它的罰款:-) – Andy 2011-02-06 11:00:59