我创建了一个bash脚本,它将提取一个tar.gz
文件,该文件被解压缩5次并保留解压缩的最后tar.gz
个文件。当我执行此acript时,我收到此错误line 26: 0++: syntax error: operand expected (error token is "+")
。请参阅下面的脚本。
i=0
for tarfile in *.tar.gz
do
$(($i++))
[ $i = 5 ] && break
tar -xf "$tarfile"
done
有什么错误以及解决我的问题的正确方法是什么,即提取文件五次并保留最后一个解压缩文件。提前感谢那些帮助的人。
答案 0 :(得分:4)
您想要将$(($i++))
更改为((i++))
。见https://askubuntu.com/questions/385528/how-to-increment-a-variable-in-bash
让我们解构$(($i++))
。向外走,$i
扩展为0.所以我们有$((0++))
这个表达式。 0不能递增,因为它是一个值,而不是一个变量。因此,您收到错误消息line 26: 0++: syntax error: operand expected (error token is "+")
。
在前面没有$的情况下使用((i++))
的原因是前面的$实际上会评估i
。您不希望在此处评估i
,只需要i
递增。 (而另一个人)