所以我几乎可以保证这是一个愚蠢的问题,但我无法弄清楚这一点。我正在尝试计算我索引文件的次数。每当我找到符合某些条件的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
答案 0 :(得分:2)
正确的语法是:
var=$((var+1))
所以而不是
$1=$(($1+1))
你应该使用变量名加上我在上面指出的语法。一般来说,记住bash变量是在没有$
的情况下设置的,并与之一起使用。
Charles Duffy引述:
如果定位bash而不是POSIX sh,还可以选择(( ++var ))
或(( var += 1 ))