Bash의 {}
괄호 확장 구문으로 쉽게 순열을 만들 수 있습니다.
# echo {b,c,d}{a,e,i,o,u}
ba be bi bo bu ca ce ci co cu da de di do du
/이 가능 방법이 매우 어색 사용을 제외하고 배열과 함께이를 사용하는 경우는 나에게 분명하지 않다 $()
echo
과eval
중괄호 확장과 함께 배열을 사용하는 간단한 방법이 있습니까?
예를 들어 (물론 작동하지 않음)과 같은 것을 상상해보십시오.
CONS=( b c d )
VOWEL=( a e i o u )
echo {${CONS[@]}}{${VOWEL[@]}}
답변
eval with IFS=,; "${array[*]}"
(값을 쉼표로 조인) 또는 두 개의 for 루프를 사용할 수 있습니다.
$ CONS=(b c d);VOWEL=(a e i o u)
$ IFS=,;eval echo "{${CONS[*]}}{${VOWEL[*]}}"
ba be bi bo bu ca ce ci co cu da de di do du
$ for c in "${CONS[@]}";do for v in "${VOWEL[@]}";do echo "$c$v";done;done|paste -sd' ' -
ba be bi bo bu ca ce ci co cu da de di do du
답변
그것은 가능하다 zsh
:
$ CONS=( b c d )
$ VOWEL=( a e i o u )
$ echo $^CONS$^VOWEL
ba be bi bo bu ca ce ci co cu da de di do du
또는 es
:
; VOWEL=( a e i o u )
; CONS=( b c d )
; echo $VOWEL^$CONS
ab ac ad eb ec ed ib ic id ob oc od ub uc ud
로 bash
또는 ksh93
, 당신처럼 뒤얽힌 뭔가를해야 할 것입니다 :
VOWEL=( a e i o u )
CONS=( b c d )
qVOWEL=$(printf %q, "${VOWEL[@]}")
qCONS=$(printf %q, "${CONS[@]}")
eval "echo {${qVOWEL%,}}{${qCONS%,}}"
답변
재미는 있지만 아마도 최고는 아닙니다.
temparr=( b{a,e,i,o,u} c{a,e,i,o,u} d{a,e,i,o,u} )
echo "${temparr[@]}"