2016-07-15 4 views
1

스택 오버플로에 대한 정보는 여기에 따옴표가 필요하며 따옴표가 추가되어 있지만 읽을 필요가 없습니다.정수 식 예상 : Bash

array_length=${fileNames[@]} 

COUNTER=0 

while [ "$COUNTER" -lt "$array_length" ]; do 

오류가 계속 발생합니다. 도와주세요.

+0

이전 질문에 대한 언급은 문맥에 도움이되는 링크 (도움말에서 설명하는 문제를 수정하고 수정 가능) 여야합니다. 그러나 여러분이 보여주는 짧은 부분을 보면서,'array_length'라는 변수를 파일 이름 목록에 설정 한 다음 숫자로 사용하려고합니다. 'fileNames'가 하나의 요소 만 가지고 있지 않으면 (이 경우'[0]'을 사용하지 않을 것입니다.) 숫자가 될 수도 있습니다. test의 호출은 작동하지 않을 수 있습니다. – MAP

+0

죄송합니다. 다시 찾으려고합니다. 나에게 도움이되지 않아서 내가 문을 닫았다. –

+0

[bash arrays] (http://tldp.org/LDP/abs/html/arrays.html) –

답변

6
array_length=${fileNames[@]} 

을 비난하는 완전히 새로운이 예상되는 동작을 위해

array_length=${#fileNames[@]} 

을 했어야 당신의 while 루프가 있어야한다 : #를 앞에 동안
while [ "$COUNTER" -lt "$array_length" ] 
do 
. 
#do something 
. 
((COUNTER++)) # Equivalent to COUNTER=COUNTER+1 
done 

${fileNames[@]}

전체 배열로 확장 요소 수를 제공합니다. Sidenotes


:

1. 루프 동안 내부 COUNTER을 증가하는 것을 잊지 마십시오.
2. 일반적으로 시스템 용으로 예약되어 있으므로 COUNTER과 같은 대문자가있는 변수를 사용하지 마십시오.

+0

고마워, 5 분 안에 받아 들일거야. "$ COUNTER + 1"-lt "$ array_length" 이 중 하나라도 여전히 오류가 발생합니다. 주요 개념이 있으면 새로운 질문을 열어 드리겠습니다. –

+0

@BhavyaArora :'counter + 1'은'counter'를 증가시키지 않습니다. – sjsam

+0

나는 그것을 여기에서 증가시키고 싶지 않고 단지 다음 숫자와 비교하기를 원한다. 오류를 제거하려면 어떻게합니까? 또한 카운터를 늘리면 어떻습니까? let counter = counter + 1? –