2014-02-15 5 views
3

그래서 이것은 거의 바보 같은 질문이지만 거의 이해할 수 없습니다. 나는 파일을 색인 생성 한 횟수를 계산하려고합니다. 특정 기준과 일치하는 pdf 파일을 찾을 때마다 카운터를 증가시켜야합니다 (메타 데이터는 3 개의 특정 값을 포함해야합니다). 문제의 변수가 indexCount이고, 나는이 선에 대한 정보 #NOT SURE와 함께 증가하기 위해 노력하고있어 선을 표시 한함수 bash에서 변수 값을 증가 시키십시오.

index() { 
    for file in * 
    do 
     [ -d "$file" ] && (cd "$file"; index) 
     oldPath=$(pwd) 
     if [ "$(echo "$file" | grep -E '.*\.pdf')" ]; then 
      metadata="$(pdftk "$file" dump_data)" 

      echo "$metadata" | $(grep -e '^InfoKey: Title' >/dev/null 2>&1) && echo "$metadata" | $(grep -e '^InfoKey: Author' >/dev/null 2>&1) && echo "$metadata" | $(grep -e '^InfoKey: CreationDate' >/dev/null 2>&1) 
      if [ $? -eq 0 ]; then 
       path="$(pwd)/""$file" 
       title=$(getAttr "$metadata" '^InfoKey: Title') 
       author=$(getAttr "$metadata" '^InfoKey: Author') 
       creation=$(getAttr "$metadata" '^InfoKey: CreationDate') 

       authorsArray=($(getAuthors "$author")) 

       for auth in "${authorsArray[@]}"; 
       do 
        createFolders "$auth" "$creation" "$title" "$path" "$oldPath" 
       done 

       $1=$(($1+1)) #NOT SURE ABOUT THIS LINE 
      fi 
     fi 
    done 

    echo $1 
} 

indexCount=0 
index $indexCount 
+3

수있는 옵션이있다 많은 다른 코드 (제대로 작동하거나 그렇지 않을 수도 있음)가 섞여있는 테스트 케이스에 반대했다. (증분 문제에 대해서는 좋은 대답이 있지만, 문제에 섞여있는 다른 모든 것들은 그 문제의 정확성을 논의하기가 더 어렵습니다.) –

답변

2

올바른 구문은 다음과 같습니다 그래서 대신

var=$((var+1)) 

$1=$(($1+1)) 

위의 구문을 더한 변수 이름을 사용해야합니다. 일반적으로 bash 변수는 $없이 설정되고 사용됩니다. 찰스 더피에서 인용

는 :

POSIX 쉬 반대로 떠들썩한 파티를 대상으로하는 경우로, 또한 증분을 포함 _only_ 테스트 케이스를 준 경우 덜 문제가 될 것 ((++var)) 또는 ((var += 1))

+0

그래, $ 1 = $ (($ 1 + 1))을 indexCount = $ ((indexCount + 1)로 대체하고 $ 1을 echo $ indexCount로 echo했다. 그러나 이제는 테스트 데이터로 5 1 0을 출력한다. 6. 어떻게해야합니까? – user1443362

+0

이 값의 출처를 모르지만 파일을 반복 할 때마다'indexCount'를 출력하여 제대로 증가하는지 확인하십시오. 그러면 잘못된 것이 무엇인지 알게 될 것입니다. , http://tldp.org/LDP/abs/html/dblparens.html – fedorqui

+0

방금 ​​언급 한 값은 게시물에서 언급 한 요구 사항을 충족하는 파일에 해당합니다. 따라서 표시 될 때마다 indexCount가 증가하지만 그것은 폴더를 통해 재귀 할 때 인덱스를 호출 할 때마다 global인데도 불구하고 indexCount의 값을 다시 설정합니다. – user1443362

관련 문제