2012-07-17 84 views
3

我需要編寫一個bash腳本,它以排序順序輸出其命令行參數,每行一個。按排序順序輸出自變量

我寫了這個腳本,它工作正常,但有沒有其他方式?特別是不輸出到文件和排序。

#!/bin/bash 

for var in $* 
do 
    echo $var >> file 
done 

sort file 
rm file 

程序的測試運行:

$ script hello goodbye zzz aa 
aa 
goodbye 
hello 
zzz 

回答

6
#!/bin/bash 

for var in "[email protected]"; do 
    echo "$var" 
done | sort 

你想在引號使用[email protected] (而不是$*)以適應空格的參數,如

script hello "goodbye, cruel world" 

該管道擺脫了臨時文件的需要。

+0

'$ var'也需要引號,否則將在變量擴展後嘗試分詞和路徑名擴展。 – geirha 2012-07-17 17:57:45

+0

好點,我只是想着整條線路被整理。 – chepner 2012-07-17 18:05:34

+0

@chepner,如何根據決定輸入大小的第一個參數對下列參數進行排序? – ThisGuy 2013-12-04 14:58:03

9

可以通過管道for循環進行排序,或者只是做

printf '%s\n' "[email protected]" | sort 
+0

我總是忘記'printf'提供的隱式循環。 – chepner 2012-07-17 17:16:02