Gibreel Abdullah
Gibreel Abdullah

Reputation: 395

bash: [: 1+1: integer expression expected

I have a main directory with 40 subdirectories with names [Set 1], [Set 2] ... [Set 40], each containing 20 wallpapers with name 1.jpg, 2.jpg, ... 20.jpg. I want to move all these wallpapers to the main directory and rename them as 1.jpg, 2.jpg ... 800.jpg. I wrote the following Bash script but getting error.

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

Where am I making a mistake?

Upvotes: 1

Views: 1484

Answers (1)

user594138
user594138

Reputation:

In bash you enclose mathmatical/arithmetical operations in $(()), so

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

Should do what you want..

Upvotes: 3

Related Questions