"${ARRAY[@]}"
()を引用すると、なぜ"..."
複数の単語に拡張されるのかわかりません。
たとえば、
IFS=":" read -ra ARRAY <<< "foo:bar:baz"
for e in "${ARRAY[@]}"; do echo $e; done
foo
bar
baz
引用符で展開された他の変数(例"${VAR}"
:)は単語を生成します。
VAR="foo bar baz"
for a in "${VAR}"; do echo $a; done
foo bar baz
誰でもこれをLinux初心者に説明できますか?
答え1
큰따옴표로 인덱싱하면 배열이 @
요소 목록으로 확장되기 때문입니다. man bash
"배열" 아래에 문서화되어 있습니다 .
단어가 큰따옴표로 묶인 경우 ...는
${name[@]}
name의 각 요소를 별도의 단어로 확장합니다.
모든 요소가 $IFS 문자의 단어 분리기 및 와일드카드(즉, 또는 확장)의 영향을 받지 않도록 하려면 *
이 ?
동작이 필요합니다 [...]
.
#!/bin/bash
arr=(a 'b c' d)
for el in ${arr[@]} ; do echo "1: $el" ; done
for el in "${arr[@]}" ; do echo "2: $el" ; done
산출:
1: a
1: b
1: c
1: d
2: a
2: b c
2: d
$IFS
배열을 단일 문자열( 의 첫 번째 문자로 구분된 배열 요소 , 기본값은 공백) 로 확장하려는 경우 사용합니다 "${arr[*]}"
.
"${arr[@]}"
배열 확장을 위한 및 구문은 "${arr[*]}"
위치 인수의 및 구문과 유사합니다 "$@"
."$*"