bash 변수 할당에서 단일 괄호


11

bash에서 단일 괄호가 궁금합니다. 하위 쉘에서 명령을 실행하는 데 사용되고 배열을 만드는 데 사용되지만 다른 용도로 사용된다는 것을 알고 있습니다.

내 관심을 끄는 한 가지는 변수 할당을 사용할 때와 같이

var=(hello)
echo $var    # hello

bash는 오류 또는 아무것도 생성하지 않으며 출력은 마치

var=hello

이 두 변수 정의가 동일합니까 아니면 차이가 있습니까?

답변:


14

귀하의 경우 괄호 ()는 배열 정의로 사용됩니다 (예 :

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; }
  • 글로브에서 패턴 목록 : ?(), *(), +(), @(), !()( 경우에만 extglobIS가 가능 )

1
맞아, 나는 실제로 그것을 생각하지 않았다. 그러나 var=(1 2 3); echo $var같은 것 var=(1 2 3); echo ${var[0]}입니까?
Mattias

예, 결과 bash는 같습니다.
jimmij

우리는 필요합니까 ""에서 echo "${a}"?
nn0p 2019

@ nn0p 예, split 및 glob 작업을 수행하지 않으려면 그렇습니다 a. 예를 들어 고려 a=*시도하십시오, echo $a하고 echo "$a".
jimmij
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.