배열 요소를 사용한 중괄호 확장

배열 요소를 사용한 중괄호 확장

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

관련 정보