Bashではすでに次のことができます。
echo foo.{a,b,c}
# == foo.a foo.b foo.c
おおよその取得方法は次のとおりです。
arr=(a b c)
echo foo.{${arr[@]}}
# == foo.a foo.b foo.c
答え1
あなたはそれを使用することができますパラメータ拡張
$ arr=(a b c)
$ echo "${arr[@]/#/foo.}"
foo.a foo.b foo.c
答え2
使用する必要がない場合bash
:
rc
es
//akanga
(これがデフォルトの動作です):
$ arr=(a b c)
$ echo foo.$arr
foo.a foo.b foo.c
zsh
:
$ arr=(a b c)
$ echo foo.$^arr
foo.a foo.b foo.c
または
$ set -o rcexpandparam
$ arr=(a b c)
$ echo foo.$arr
foo.a foo.b foo.c
(拡張を^
有効にします。例:有効または)rcexpandparam
=
shwordsplit
~
globsubst
魚
(また基本動作)
$ set arr a b c
$ echo foo.$arr
foo.a foo.b foo.c
これらのすべてのシェルはbashよりも優れた配列デザインを持っています(それ自体はkshからコピーされます)。
zsh
拡張はfish
支柱の拡張と同様に機能します。でrc
使用すると異なりますecho $arr.$arr
。以下を提供します。
a.a b.b c.c
fish
/にいる間、次zsh -o rcexpandparam
の結果を提供しますecho {a,b,c}.{a,b,c}
。
a.a a.b a.c b.a b.b b.c c.a c.b c.c