2017-02-24 7 views
2

와 루프 때이 같은 파일이 ") 구문 오류 유효하지 않은 산술 연산자 (오류 토큰은": 배열

<Overall>3 
<Overall>1 
<Overall>4 
<Overall>5 
... 

임, 전체 태그 뒤에 숫자를 읽어 배열에 넣어 위해 노력 . 그리고 그들과 함께 작업을 수행 한 후

array=($(grep '<Overall>' "$file" | cut -d'>' -f 2)) 

    total=0 
    for each in "${array[@]}" 
    do 
     total+=$(awk -v awkEach="${array[$each]}" 'BEGIN{print (awkEach-4.78)^2}') 
    done 

총 수있는 결과를 추가하지만 내가 얻을 : ") 구문 오류 : 유효하지 않은 산술 연산자 (오류 토큰은"

내가 모두 비슷한 질문을 읽고 그리고 다른 것들을 시도했지만 아무것도 작동하지 않는 것 같습니다. 이 모든 대체 할 수

+0

이 유일한 문제가 있다면 나도 몰라,하지만 당신은'선언 할 필요가 -i 총 = 0' 사용하려는 경우'+ =' 연산자는'(())'및'$ (()) '와 같은 산술 표현식 밖에 있습니다. – Fred

+0

중복은 게시 된 오류의 원인을 설명하지만 스크립트에서 유일한 문제는 아닙니다. 아래에 게시 된 더 쉬운 해결책을 사용하거나, 당신의 문제를 해결하기 위해'total = $ (awk -v total = "$ total"-v awkEach = "$ each" 'BEGIN {print total + (awkEach-4.78)^2} '대신'1.bash 루프에서 for 루프를 사용하고 인덱스가 아니라 2.bash는 십진수로 숫자를 더할 수 없다. –

답변

4

,

$ awk -F'>' '{sum+=($2-4.78)^2} END{print sum}' file 

18.1136