인덱스 k의 배열 요소 인쇄

인덱스 k의 배열 요소 인쇄

bash 배열이 있고 index 에서 시작하는 배열 요소를 인쇄하고 싶습니다 k.

다음 전략으로는 문제가 해결되지 않았습니다.

printf "%s\n" "${ar[$j:]}"

답변1

구문은 ${ar[@]:j}1 입니다 . Parameter Expansion섹션 에서 man bash:

   ${parameter:offset:length}
   .
   .
   .
          If parameter is an indexed array name subscripted by @ or *, the
          result is the length members of the array beginning  with  ${pa‐
          rameter[offset]}.   A  negative  offset is taken relative to one
          greater than the maximum index of the specified array.  It is an
          expansion error if length evaluates to a number less than zero.

그래서 주어진

$ ar=("1" "2 3" "4" "5 6" "7 8" "9")

그런 다음 (bash 배열 인덱싱은 0 기반임을 기억하세요):

$ j=3; printf '%s\n' "${ar[@]:j}"
5 6
7 8
9

또는 C 스타일 for 루프를 사용하세요.

for ((i=k;i<${#ar[@]};i++)); do
  printf '%s\n' "${ar[i]}"
done

  1. 또는 ${ar[@]:$j}원하는 경우 - $인덱스는 다음과 유사한 수치적 맥락에서 평가되므로 두 번째는 선택 사항입니다.((...))

관련 정보