Bash - [] 연산자에 대한 숫자가 아닌 인수(배열)

Bash - [] 연산자에 대한 숫자가 아닌 인수(배열)

아래에 작은 스크립트가 있지만 for 루프와 if 문을 잘 이해하지 못합니다. 먼저 스크립트를 살펴보겠습니다.

listFieldNumbers ()
 { for ii in ${!field_number[@]}; 
do 
if [ $ii -lt $(( ${#field_number[*]}-1 )) ];
 then echo -n "$(( ${field_number[$ii]} + 1 )),"; 
else echo "$(( ${field_number[$ii]} + 1))"; 
fi; 
done; }

다음 진술이 무엇을 의미하는지 이해하지 못합니다.

  1. field_number[@]
  2. {#field_number[*]}

답변1

field_number는 배열이고,
${!field_number[@]}배열의 인덱스 목록을 제공하며
${#field_number[*]}, 는 배열의 요소 수입니다.

배열에 대한 bash 튜토리얼을 찾아보는 것이 좋습니다. 그들과 함께 일하는 것은 약간 까다롭습니다.

답변2

  1. field_number 배열의 모든 요소를 ​​참조합니다.
  2. ${#field_number[*]}field_number 요소의 개수 입니다 .

이 튜토리얼을 읽어보세요:http://www.thegeekstuff.com/2010/06/bash-array-tutorial/

관련 정보