괄호 ( $var
대 ${var}
)
대부분의 경우 $var
와 ${var}
동일합니다 :
var=foo
echo $var
# foo
echo ${var}
# foo
중괄호는 표현식의 모호성을 해결하는 데만 필요합니다.
var=foo
echo $varbar
# Prints nothing because there is no variable 'varbar'
echo ${var}bar
# foobar
따옴표 ( $var
대 "$var"
대 "${var}"
)
변수 주위에 큰 따옴표를 추가하면 공백이 포함되어 있어도 쉘에 단일 단어로 취급하도록 지시합니다.
var="foo bar"
for i in "$var"; do # Expands to 'for i in "foo bar"; do...'
echo $i # so only runs the loop once
done
# foo bar
이 동작을 다음과 대조하십시오.
var="foo bar"
for i in $var; do # Expands to 'for i in foo bar; do...'
echo $i # so runs the loop twice, once for each argument
done
# foo
# bar
와 마찬가지로 $var
대 ${var}
, 중괄호은 예를 들어, 동음이 필요하다 :
var="foo bar"
for i in "$varbar"; do # Expands to 'for i in ""; do...' since there is no
echo $i # variable named 'varbar', so loop runs once and
done # prints nothing (actually "")
var="foo bar"
for i in "${var}bar"; do # Expands to 'for i in "foo barbar"; do...'
echo $i # so runs the loop once
done
# foo barbar
참고 "${var}bar"
두 번째 예에서는 상기도 기록 할 수 "${var}"bar
있으며,이 경우에 당신은 즉, 더 이상 괄호가 필요하지 않습니다 "$var"bar
. 그러나 문자열에 따옴표가 많으면 이러한 대체 양식을 읽기가 어려워 유지 관리가 어려울 수 있습니다. 이 페이지 는 Bash 인용에 대한 좋은 소개를 제공합니다.
배열 ( $var
대 $var[@]
vs. ${var[@]}
)
이제 배열을 위해. bash 매뉴얼 에 따르면 :
첨자가없는 배열 변수를 참조하는 것은 첨자가 0 인 배열을 참조하는 것과 같습니다.
다시 말해,로 색인을 제공하지 않으면 []
배열의 첫 번째 요소를 얻게됩니다.
foo=(a b c)
echo $foo
# a
정확히 같은
foo=(a b c)
echo ${foo}
# a
배열의 모든 요소를 가져 오려면 @
인덱스 로 사용해야 합니다 (예 :) ${foo[@]}
. 괄호는 배열이 없으면 셸이 $foo
부분을 먼저 확장 하여 배열의 첫 번째 요소와 리터럴을 제공하므로 배열에 필요합니다 [@]
.
foo=(a b c)
echo ${foo[@]}
# a b c
echo $foo[@]
# a[@]
이 페이지 는 Bash의 배열에 대한 좋은 소개입니다.
재 방문한 따옴표 ( ${foo[@]}
vs. "${foo[@]}"
)
당신은 이것에 대해 묻지 않았지만 알기에 좋은 미묘한 차이입니다. 배열의 요소에 공백이 포함될 수있는 경우 각 요소가 별도의 "단어"로 처리되도록 큰 따옴표를 사용해야합니다.
foo=("the first" "the second")
for i in "${foo[@]}"; do # Expands to 'for i in "the first" "the second"; do...'
echo $i # so the loop runs twice
done
# the first
# the second
이것을 큰 따옴표없이 동작과 대조하십시오 :
foo=("the first" "the second")
for i in ${foo[@]}; do # Expands to 'for i in the first the second; do...'
echo $i # so the loop runs four times!
done
# the
# first
# the
# second
bash