다음 예를 찾았습니다.여기. 하지만 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
예를 들어 위의 용어 및 Markdown
for에 액세스하고 싶습니다 CFD
.
답변1
쉘(모든 쉘)에서 배열의 배열은 나쁜 생각입니다. 다른 언어가 필요합니다.
배열은 어떻게
arr
정의되나요?a='domain.de;de;https' arr=(${a//;/ })
작동 방식은 다음과 같습니다.
- 각각을
;
다음으로 교체하십시오.space
- IFS가 공백, 탭, 개행(기본값)이라고 가정합니다.
- 공간 분할(IFS에 포함)인용되지 않음확대
${...}
- 배열에 할당
(...)
- 그리고 배열 이름을
arr=
.
이 정의의 이점은 무엇입니까?
아니요, 그냥 질문입니다:
- 요소에 공백, 탭 또는 줄 바꿈이 포함되어 있으면 분할됩니다.
- 와일드카드 는 닫히지 않으므로 모든
*
또는는 일치하는 파일로 확장됩니다.?
[ ]
- nullglob이 활성화된 경우 또는를 포함하는 모든 문자열이
*
제거?
됩니다[ ]
. - Failglob이 활성화된 경우 앞의 모든 문자는 오류를 생성합니다.
요컨대, 껍질을 쪼개는 것은 함정으로 가득 차 있습니다.