What am I doing wrong?
Brace expansion happens before variable expansion, saying:
... /dir/{$ff..$tt}
would not work.
A workaround might be to use an array and Shell Parameter Expansion:
range=($(seq $ff $tt))
... "${range[@]/#//dir/}"
سؤال
I have a lot of dirs like:
/dir/1/
/dir/2/
...
/dir/1200/
I need to tar directories by range 0-999, 1000-1999, 2000-2999 into d0.tar.bz2, d1.tar.bz2, d2.tar.bz2 and etc.
I wrote this script:
#!/bin/bash
for i in {0..10}
do
let "tt = ($i+1)*1000"
let "ff = $i*1000"
tar -cfv /backups/d$i.tar.bz2 /dir/{$ff..$tt}
done
But I have errors while running:
tar: Removing leading `/' from member names
tar: /backups/d0.tar.bz2: Cannot stat: No such file or directory
tar: /dir/{0..1000}: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
What am I doing wrong?
المحلول
What am I doing wrong?
Brace expansion happens before variable expansion, saying:
... /dir/{$ff..$tt}
would not work.
A workaround might be to use an array and Shell Parameter Expansion:
range=($(seq $ff $tt))
... "${range[@]/#//dir/}"