使用bash脚本提取文件 - 发生错误

时间:2014-05-12 01:41:45

标签: linux bash loops tar

我创建了一个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

有什么错误以及解决我的问题的正确方法是什么,即提取文件五次并保留最后一个解压缩文件。提前感谢那些帮助的人。

1 个答案:

答案 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递增。 (而另一个人)