是否存在与 Plan 9 rc shell 中的连接等效的 Bash?

是否存在与 Plan 9 rc shell 中的连接等效的 Bash?

在 Plan 9 rcshell 中,可以这样写

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

相关内容