配列要素を使用した中括弧の拡張

配列要素を使用した中括弧の拡張

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

rces//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

関連情報