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