저는 MacOSX에서 터미널을 사용하고 있습니다.
나는 이것을 읽었다입구유닉스 배열을 소개합니다. 다음과 같은 방식으로 배열에 액세스하려고 시도했지만 실패했습니다.
a=(1,2) && echo "${a[0]}"
출력은 다음과 같습니다.
1,2
그것이 내가 기대했던 것입니다 1
.
어떻게 해야 합니까?
답변1
a=('1' '2') && echo "${a[0]}"
이것이 더 좋을 것입니다.
귀하의 버전에서는 "1,2" 값을 포함하는 단일 요소 배열만 생성했습니다.
답변2
인덱스 배열의 요소에 액세스할 때 기억해야 할 세 가지 사항은 다음과 같습니다.
1. 정규식 - 하드 코딩된 인덱스
arr=(one two three)
element_0="${arr[0]}"
2. 일반 표현식 - 변수에 저장된 인덱스
arr=(it is cool to write readable code)
for ((i=0; i < ${#arr[@]}; i++)); do
current_element=${arr[i]} # note, no '$' necessary before i
done
3. 배열 요소를 포함하는 산술 표현식
arr=(100 150 350)
((sum_of_first_two = arr[0] + arr[1])) # no need for '{ }'
답변3
비록 당신의실제질문은 질문 제목이 나타내는 것과 다릅니다(배열 항목에 액세스하는 방법이 정확함). 다음은 bash 배열 사용 방법에 대한 일반적인 설명입니다.
~에서배쉬 참조 매뉴얼
참조 배열의 모든 요소를 사용할 수 있습니다
${name[subscript]}
. 쉘의 파일 이름 확장 연산자와의 충돌을 방지하려면 중괄호가 필요합니다.
...
아래 첨자는 숫자로 평가되어야 하는 산술 표현식으로 처리됩니다.
즉, $
아래첨자가 필요하지 않습니다.
인덱스 배열 요소를 참조하는 데 사용된 아래 첨자가 0보다 작은 숫자로 평가되면 배열의 최대 인덱스보다 큰 1을 기준으로 해석되므로 음수 인덱스는 배열 끝에서 거꾸로 계산됩니다. 1은 요소의 끝을 나타냅니다.
예를 들어:
declare -i i=1 # -i declares integer
${arr[i*2]}
${arr[-1]} #returns last element
${arr[0]} #first element is at index 0