배열 내의 배열: bash의 배열에 대한 다양한 구문

배열 내의 배열: bash의 배열에 대한 다양한 구문

다음 예를 찾았습니다.여기. 하지만 arr배열이 어떻게 정의되는지 이해할 수 없습니다 .

a='domain.de;de;https'
$ arr=(${a//;/ })

이 정의의 이점은 무엇입니까?

실제로 다음과 같이 배열을 다른 크기의 배열에 저장하고 싶습니다.

declare -a Workspace=(
    "${Folder[0]}"  "CFD"   "General,Markdown"
    "${Folder[4]}"  "GPU"   "General,Markdown,Python,C,Java"
)

General예를 들어 위의 용어 및 Markdownfor에 액세스하고 싶습니다 CFD.

답변1

쉘(모든 쉘)에서 배열의 배열은 나쁜 생각입니다. 다른 언어가 필요합니다.

배열은 어떻게 arr정의되나요?

a='domain.de;de;https'
arr=(${a//;/ })

작동 방식은 다음과 같습니다.

  • 각각을 ;다음으로 교체하십시오.space
  • IFS가 공백, 탭, 개행(기본값)이라고 가정합니다.
  • 공간 분할(IFS에 포함)인용되지 않음확대${...}
  • 배열에 할당(...)
  • 그리고 배열 이름을 arr=.

이 정의의 이점은 무엇입니까?

아니요, 그냥 질문입니다:

  • 요소에 공백, 탭 또는 줄 바꿈이 포함되어 있으면 분할됩니다.
  • 와일드카드 는 닫히지 않으므로 모든 *또는는 일치하는 파일로 확장됩니다.?[ ]
  • nullglob이 활성화된 경우 또는를 포함하는 모든 문자열이 *제거 ?됩니다 [ ].
  • Failglob이 활성화된 경우 앞의 모든 문자는 오류를 생성합니다.

요컨대, 껍질을 쪼개는 것은 함정으로 가득 차 있습니다.

관련 정보