Bash中的多参数花括号展开
我如何使用支架扩展来实现cal 8 2014的等效性;cal 9 2014?cal{8,9}2014扩展为cal 8,9 2014(显示9月9日)。cal{08 2014,09 2014}不是有效的大括号扩展,我不能使用cal{“08 2014”,“09 2014”},因为它扩展为cal“08 2014”“09 2014”这两个参数在这里显然没有什么意义:/我开始质疑大括号扩展的实用性….大括号扩展很好,因为循环也很好,但将printf | sh添加到您的曲目中 你的身体会很好:Bash中的多参数花括号展开,bash,brace-expansion,Bash,Brace Expansion,我如何使用支架扩展来实现cal 8 2014的等效性;cal 9 2014?cal{8,9}2014扩展为cal 8,9 2014(显示9月9日)。cal{08 2014,09 2014}不是有效的大括号扩展,我不能使用cal{“08 2014”,“09 2014”},因为它扩展为cal“08 2014”“09 2014”这两个参数在这里显然没有什么意义:/我开始质疑大括号扩展的实用性….大括号扩展很好,因为循环也很好,但将printf | sh添加到您的曲目中 你的身体会很好: printf
printf "cal %s 2014\n" {8,9}|sh
一个明显的好处是,你可以在没有sh的情况下运行它,先看看它是否正确
还可以转义空间,以便支架展开包括cal和2014:
$ echo cal\ {8,9}\ 2014\;
cal 8 2014; cal 9 2014;
然后管道通过sh:
$ 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
大括号扩展很好,因为循环也很好,但将printf | sh添加到您的曲目和 你的身体会很好:
printf "cal %s 2014\n" {8,9}|sh
一个明显的好处是,你可以在没有sh的情况下运行它,先看看它是否正确
还可以转义空间,以便支架展开包括cal和2014:
$ echo cal\ {8,9}\ 2014\;
cal 8 2014; cal 9 2014;
然后管道通过sh:
$ 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
大括号扩展很好,因为循环也很好,但将printf | sh添加到您的曲目和 你的身体会很好:
printf "cal %s 2014\n" {8,9}|sh
一个明显的好处是,你可以在没有sh的情况下运行它,先看看它是否正确
还可以转义空间,以便支架展开包括cal和2014:
$ echo cal\ {8,9}\ 2014\;
cal 8 2014; cal 9 2014;
然后管道通过sh:
$ 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
大括号扩展很好,因为循环也很好,但将printf | sh添加到您的曲目和 你的身体会很好:
printf "cal %s 2014\n" {8,9}|sh
一个明显的好处是,你可以在没有sh的情况下运行它,先看看它是否正确
还可以转义空间,以便支架展开包括cal和2014:
$ echo cal\ {8,9}\ 2014\;
cal 8 2014; cal 9 2014;
然后管道通过sh:
$ 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
我不认为用大括号扩展可以做到这一点,但我打赌你可以用cal的
-A
(如cal-A 1 8 2014
)解决你原来的问题。大括号扩展对于它预期的用途是有用的,但这些用途包括“仅在单个命令调用的参数内”,而您正试图调用两个命令。一个“明显的”解决方案是{8,9}中m的;2014年不超过1000万加元;完成
(虽然只有两个月的时间,你可以在8 9中为m编写;在2014年为cal$m编写;完成
,并且seq
也是一个非常有用的工具。我不认为你可以通过大括号扩展来实现这一点,但我打赌你可以用cal的-a
(如cal-a 18 2014
).Brace扩展对于其预期用途非常有用,但这些用途包括“仅在单个命令调用的参数内”,而您正在寻求调用两个命令。一个“明显”的解决方案是{8,9}中m的;do cal$m 2014;done
(虽然只有两个月的时间,你就可以在8.9中为m编写;在2014年为cal$m编写;在2014年完成,并且seq
也是一个非常有用的工具。我认为你不能通过大括号扩展来实现这一点,但我打赌你可以用cal的-a
(如cal-a 1.8 2014
).Brace扩展对于其预期用途非常有用,但这些用途包括“仅在单个命令调用的参数内”,而您正在寻求调用两个命令。一个“明显”的解决方案是{8,9}中m的;do cal$m 2014;done
(虽然只有两个月的时间,你就可以在8.9中为m编写;在2014年为cal$m编写;在2014年完成,并且seq
也是一个非常有用的工具。我认为你不能通过大括号扩展来实现这一点,但我打赌你可以用cal的-a
(如cal-a 1.8 2014
).Brace扩展对于其预期用途非常有用,但这些用途包括“仅在单个命令调用的参数内”,而您正在寻求调用两个命令。一个“明显”的解决方案是{8,9}中m的;do cal$m 2014;done
(虽然只有两个月的时间,你就可以在89年为m编写;2014年为m编写cal$m;完成,并且seq
也是一个非常有用的工具。以编程方式生成代码是一个雷区——编写通向sh
的代码在道德上等同于eval
,并且具有所有的功能。这里显示的个别案例是安全的,但不安全。)这对每个使用该实践的人来说都是正确的,这是有风险的。以编程方式生成代码是一个雷区——编写通过管道传输到sh
的代码在道德上等同于eval
,并且具有所有的风险。这里显示的个别案例是安全的,但假设对每个使用该实践的人来说都是正确的,这是有风险的。Programmatically生成代码是一个雷区——编写通向sh
的代码在道德上等同于eval
,并且具有所有的风险。这里显示的个别情况是安全的,但假设对每个使用该实践的人都是安全的。编程生成代码是一个雷区——编写通向sh
的代码在道德上等同于eval
,并且具有所有的风险。这里显示的个别案例是安全的,但假设对每个使用该实践的人都是如此是有风险的。