1. 정규식 - 하드 코딩된 인덱스

1. 정규식 - 하드 코딩된 인덱스

저는 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

관련 정보