在 Plan 9 rc
shell 中,可以这样写
echo (foo bar baz)^.c
要得到
foo.c bar.c baz.c
或者
echo (foo bar baz)^(.c .h .o)
要得到
foo.c bar.h baz.o
Bash 中是否有与此等效的方法?具体来说,是否有比前者更快的方法
`for f in foo bar baz; do echo $f.c; done`
,后者是否存在这样的方法?
答案1
您可以使用括号扩展对于第一种情况:
$ echo {foo,bar,baz}.c
foo.c bar.c baz.c
(注意:这对于存储在变量中的列表不起作用,因为括号扩展发生在变量扩展之前。)
但我不认为有办法将两个列表连接在一起(就像 Plan 9 的一样echo (foo bar baz)^(.c .h .o)
)。如果你对两个列表使用括号扩展,它会给出所有可能的组合:
$ echo {foo,bar,baz}{.c,.h,.o}
foo.c foo.h foo.o bar.c bar.h bar.o baz.c baz.h baz.o