增加函数bash中的变量值

时间:2014-02-15 02:41:49

标签: bash

所以我几乎可以保证这是一个愚蠢的问题,但我无法弄清楚这一点。我正在尝试计算我索引文件的次数。每当我找到符合某些条件的pdf文件时,我需要递增一个计数器(它的元数据必须包含3个特定值)。有问题的变量是indexCount,我已经标记了我试图增加它的行#NOT SURE关于此行

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

1 个答案:

答案 0 :(得分:2)

正确的语法是:

var=$((var+1))

所以而不是

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

你应该使用变量名加上我在上面指出的语法。一般来说,记住bash变量是在没有$的情况下设置的,并与之一起使用。

Charles Duffy引述:

如果定位bash而不是POSIX sh,还可以选择(( ++var ))(( var += 1 ))