연관 배열에서 검색된 값이 잘못 되었습니까?

이반 스타 네프

저는 "Bash Pocket Reference"책을 살펴 보았고 연관 배열에 대한 섹션에 도달했습니다. 이제 책의 예제 코드를 시도하면 예상치 못한 대답이 나옵니다.

istanev@inspiron5559:~$ data=([joe]=30 [mary]=25)
istanev@inspiron5559:~$ echo ${data[joe]}
25
istanev@inspiron5559:~$ echo ${data[mary]}
25

data [joe]가 30을 반환해야하지 않나요? 대신 25를 반환하는 이유는 무엇입니까? 내 bash 버전은 4.3.46 (1) 릴리스입니다.

이삭

기본적으로 bash는 배열을 인덱스 배열로 처리합니다.
이러한 경우 인덱스는 산술 표현식으로 평가됩니다.

$ joe=3    mary=6
$ unset data
$ data=([joe]=111 [mary]=bbb)
$ declare -p data
declare -a data=([3]="111" [6]="bbb")

출력은 몇 가지 사항을 보여줍니다.

  • 배열은 인덱싱됩니다 : -a출력에서.
  • 배열에는 두 개의 값이 있습니다.
  • 값의 인덱스는 변수 joe의 숫자 값과 일치합니다 mary.
  • 배열에 포함 된 값은 문자열 일 수 있습니다.

색인이 인용 된 경우에도 마찬가지입니다 (작은 따옴표 포함).

$ joe=3    mary=6
$ unset data
$ data=(["joe"]=111 ["mary"]=bbb)
$ declare -p data
declare -a data=([3]="111" [6]="bbb") 

인덱스로 사용되는 문자열이 숫자를 포함하도록 정의되지 않은 경우 값이 0 인 산술 표현식으로 평가됩니다.

$ unset joe    ;    unset mary    ;    unset data
$ data=([joe]=111 [mary]=bbb)
$ declare -p data
declare -a data=([0]="bbb")

무슨 일이 있었는지에 대한 [joe]=111평가 [0]=111, 인덱스의 배열 0111. 그러나 다음으로 [mary]=bbb평가되어 [0]=bbb인덱스의 배열 값 0bbb.

실제로 연관 배열을 가지려면 사용하기 전에 그렇게 정의해야합니다.
데이터가 포함되어있는 동안에는 변경할 수 없습니다. 위와 같이 설정된 어레이 :

$ declare -A data
bash: declare: data: cannot convert indexed to associative array

그러나이를 지우면 다음을 수행 할 수 있습니다.

$ joe=3  ;  mary=6  ; unset data

$ declare -A data

$ data=([joe]=111 [mary]=bbb)
$ declare -p data
declare -A data=([joe]="111" [mary]="bbb" )

보시다시피 인덱스로 사용되는 문자열이 유효한 변수 이름이고 값이 포함되어 있는지는 중요하지 않습니다. 연관 배열의 문자열 인덱스로 사용됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

PHP 배열의 테이블에 잘못된 값이 삽입되었습니다.

분류에서Dev

배열 곱셈에서 Matlab이 잘못 되었습니까?

분류에서Dev

정렬 된 연결 목록 구현에 관한 내 논리가 잘못 되었습니까?

분류에서Dev

C ++ 연결 Excel 오류 : "수식에 사용 된 값의 데이터 형식이 잘못되었습니다."

분류에서Dev

검색 양식이 재설정되지 않습니다. 여기서 무엇이 잘못 되었습니까?

분류에서Dev

RuntimeWarning : ushort_scalars에서 잘못된 값이 발견되었습니다.

분류에서Dev

RuntimeWarning : large = s> cutoff에서 잘못된 값이 발견되었습니다.

분류에서Dev

데이터베이스에 잘못된 값이 삽입되었습니다.

분류에서Dev

Jolt Transformation이 잘못된 배열 요소에 값을 넣었습니다.

분류에서Dev

열의 @ClusteringColumn 주석에 대한 순서 값이 잘못 되었습니까?

분류에서Dev

제공된 비밀번호 검색 답변이 잘못되었습니다.

분류에서Dev

내 배열에 잘못된 값이 있습니다.

분류에서Dev

관계에 대한 핵심 데이터 잘못된 액세스-관계 이름을 변경하여 해결 되었습니까?

분류에서Dev

메타베이스와 LDAP 연결과 관련하여이 단계에서 무엇이 잘못 되었습니까?

분류에서Dev

개체의 속성이 기본 함수 호출로 설정되었습니다. 잘못된 연습입니까?

분류에서Dev

Sleep ()이 "잘못된"순서로 실행되었습니다.

분류에서Dev

Android에서의 방향과 관련하여 config.xml에서 무엇이 잘못 되었습니까?

분류에서Dev

PHP가 잘못된 MySQL 호스트 이름에 연결되어 있습니까?

분류에서Dev

이 TypeError가 잘못된 this. $ emit에 연결되어 있습니까?

분류에서Dev

이 앱에 지정된 연락처 전화 번호가 잘못되었습니다.

분류에서Dev

배열에서 검색하면 잘못된 결과가 반환됩니다.

분류에서Dev

이 2 쿼리에서 무엇이 잘못 되었습니까?

분류에서Dev

이 C 코드에서 무엇이 잘못 되었습니까?

분류에서Dev

이 for 루프에서 무엇이 잘못 되었습니까?

분류에서Dev

이 코드에서 무엇이 잘못 되었습니까?

분류에서Dev

이 코드에서 무엇이 잘못 되었습니까?

분류에서Dev

이 쿼리에서 무엇이 잘못 되었습니까?

분류에서Dev

함수에 배열 전달-무엇이 잘못 되었습니까?

분류에서Dev

PHP에서 Haversine 계산이 잘못 되었습니까?

Related 관련 기사

  1. 1

    PHP 배열의 테이블에 잘못된 값이 삽입되었습니다.

  2. 2

    배열 곱셈에서 Matlab이 잘못 되었습니까?

  3. 3

    정렬 된 연결 목록 구현에 관한 내 논리가 잘못 되었습니까?

  4. 4

    C ++ 연결 Excel 오류 : "수식에 사용 된 값의 데이터 형식이 잘못되었습니다."

  5. 5

    검색 양식이 재설정되지 않습니다. 여기서 무엇이 잘못 되었습니까?

  6. 6

    RuntimeWarning : ushort_scalars에서 잘못된 값이 발견되었습니다.

  7. 7

    RuntimeWarning : large = s> cutoff에서 잘못된 값이 발견되었습니다.

  8. 8

    데이터베이스에 잘못된 값이 삽입되었습니다.

  9. 9

    Jolt Transformation이 잘못된 배열 요소에 값을 넣었습니다.

  10. 10

    열의 @ClusteringColumn 주석에 대한 순서 값이 잘못 되었습니까?

  11. 11

    제공된 비밀번호 검색 답변이 잘못되었습니다.

  12. 12

    내 배열에 잘못된 값이 있습니다.

  13. 13

    관계에 대한 핵심 데이터 잘못된 액세스-관계 이름을 변경하여 해결 되었습니까?

  14. 14

    메타베이스와 LDAP 연결과 관련하여이 단계에서 무엇이 잘못 되었습니까?

  15. 15

    개체의 속성이 기본 함수 호출로 설정되었습니다. 잘못된 연습입니까?

  16. 16

    Sleep ()이 "잘못된"순서로 실행되었습니다.

  17. 17

    Android에서의 방향과 관련하여 config.xml에서 무엇이 잘못 되었습니까?

  18. 18

    PHP가 잘못된 MySQL 호스트 이름에 연결되어 있습니까?

  19. 19

    이 TypeError가 잘못된 this. $ emit에 연결되어 있습니까?

  20. 20

    이 앱에 지정된 연락처 전화 번호가 잘못되었습니다.

  21. 21

    배열에서 검색하면 잘못된 결과가 반환됩니다.

  22. 22

    이 2 쿼리에서 무엇이 잘못 되었습니까?

  23. 23

    이 C 코드에서 무엇이 잘못 되었습니까?

  24. 24

    이 for 루프에서 무엇이 잘못 되었습니까?

  25. 25

    이 코드에서 무엇이 잘못 되었습니까?

  26. 26

    이 코드에서 무엇이 잘못 되었습니까?

  27. 27

    이 쿼리에서 무엇이 잘못 되었습니까?

  28. 28

    함수에 배열 전달-무엇이 잘못 되었습니까?

  29. 29

    PHP에서 Haversine 계산이 잘못 되었습니까?

뜨겁다태그

보관