Bash 변수 할당의 단일 대괄호

Bash 변수 할당의 단일 대괄호

Bash의 단일 괄호에 대해 궁금합니다. 서브쉘에서 명령을 실행하고 배열을 생성하는 데 사용된다는 것을 알고 있지만 다른 용도로 사용됩니까?

내 관심을 끌었던 한 가지는 변수 할당에 사용할 때입니다.

var=(hello)
echo $var    # hello

bash는 오류나 어떤 것도 생성하지 않으며 출력은 다음과 같습니다.

var=hello

이 두 변수는 동일하게 정의됩니까, 아니면 서로 다른가요?

답변1

귀하의 경우 대괄호는 ()다음과 같은 배열 정의로 사용됩니다.

a=(one two three)   # array definition
echo "${a}"         # print first element of array a
echo "${a[0]}"      # print first element of array a
echo "${a[1]}"      # print *second* element of array a
echo "${#a[@]}"     # print number of elements in array a

단일 변수를 배열에 넣으면 단일 요소를 포함하는 배열만 갖게 됩니다.


다른 질문에 답하기 위해 대괄호는 다른 목적으로도 사용됩니다. 대부분의 경우 bash대괄호는 다른 문자와 결합될 수 있습니다.

  • 명령 대체:$()
  • 프로세스 대체: <()>()
  • 서브쉘:(command)
  • 산술 평가:(())
  • 기능 정의:fun () { echo x; }
  • glob의 패턴 목록: ?(), *(), +(), @(), !()(extglob활성화된 경우에만)

관련 정보