2014-09-06 30 views
0

如何使用支撐展開來製作相當於cal 8 2014; cal 9 2014cal {8,9} 2014展開至cal 8 9 2014(顯示9月9日)cal {08 2014,09 2014}不是有效的大括號擴充,而且我也不能使用cal {「08 2014」,「09 2014」}因爲擴展到cal「08 2014」「09 2014」這是兩個參數,這些參數在這裏顯然沒有任何意義:/我開始質疑括號擴展的實用....Bash中的多參數捲曲支撐擴展

+0

我不認爲你可以用括號做到這一點擴展,但我敢打賭,你可以用cal的'-A'解決你最初的問題(如'cal -A 1 8 2014')。 – 2014-09-06 02:00:33

+5

Brace擴展對於它的目的是有用的,但是這些目的包括'僅在單個命令調用的參數內',而您正試圖調用兩個命令。 {8,9}中的m是一個'明顯'的解決方案;做cal $ m 2014; (儘管只有兩個月,你可以在8月9日寫'm; 2014年完成;完成',seq也是一個非常有用的工具。 – 2014-09-06 02:09:29

回答

4

括號膨脹是偉大的,for循環也大,但增加的printf | SH你的劇目和 你會在偉大的形狀:

printf "cal %s 2014\n" {8,9}|sh 

一個明顯的好處是,您可以先運行它,而不必首先查看它是否看起來正確。

你也無法逃脫的空間,使支架膨脹包括CAL和2014:通過SH

$ echo cal\ {8,9}\ 2014\; 
cal 8 2014; cal 9 2014; 

然後通過管道:

$ echo cal\ {8,9}\ 2014\;|sh 
    August 2014 
Su Mo Tu We Th Fr Sa 
       1 2 
3 4 5 6 7 8 9 
10 11 12 13 14 15 16 
17 18 19 20 21 22 23 
24 25 26 27 28 29 30 
31 
    September 2014 
Su Mo Tu We Th Fr Sa 
    1 2 3 4 5 6 
7 8 9 10 11 12 13 
14 15 16 17 18 19 20 
21 22 23 24 25 26 27 
28 29 30 
+1

幹得好,先生。 – 2014-09-09 04:18:23