bash:[:1 + 1:预期的整数表达式

时间:2015-12-15 09:48:21

标签: linux bash

我有一个包含40个子目录的主目录,其名称为[Set 1][Set 2] ... [Set 40],每个子目录包含20个名称为1.jpg的壁纸,2.jpg ,...... 20.jpg。我想将所有这些壁纸移动到主目录,并将其重命名为1.jpg2.jpg ... 800.jpg。我编写了以下Bash脚本但收到错误。

i=1; j=1; k=1;
while [ $i -ne 41 ]; do
  j=1;
  while [ $j -ne 21 ]; do
    mv \[Set\ $i\]/$j.jpg $k.jpg;
    j=$j+1;
    k=$k+1;
  done;
  i=$i+1;
done
bash: [: 1+1: integer expression expected
bash: [: 1+1: integer expression expected

我在哪里犯了错误?

1 个答案:

答案 0 :(得分:3)

在bash中,您可以在$(())中附上数学/算术运算,所以

i=1; j=1; k=1; 
while [ $i -ne 41 ]; do 
    j=1
    while [ $j -ne 21 ]; do 
        mv "[Set ${i}]/${j}.jpg" $k.jpg
        j=$(($j+1)) k=$(($k+1))
    done
    i=$(($i+1))
done

应该做你想做的......