我有很多目标:
/dir/1/
/dir/2/
...
/dir/1200/
我需要将范围0-999,1000-1999,2000-2999的目录tar到d0.tar.bz2,d1.tar.bz2,d2.tar.bz2等等。
我写了这个剧本:
#!/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
但我在跑步时遇到错误:
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
我做错了什么?
答案 0 :(得分:1)
我做错了什么?
Brace expansion在变量扩展之前发生,说:
... /dir/{$ff..$tt}
无效。
解决方法可能是使用数组和Shell Parameter Expansion:
range=($(seq $ff $tt))
... "${range[@]/#//dir/}"