0

我有一个包含许多子目录(名为 0001、0002...)的目录,我想在每个目录中启动一个 bash 脚本。

for i in {0001..0021}; do cd $i; ../script1.sh; cd ..; done

上面它忽略了 000 并将范围作为 1 到 21。我如何让它考虑到 0?

4

4 回答 4

3
for i in {1..21}; do
    i=`printf '%04d' $i`
    # do stuff with $i (now in the format 0001)
done
于 2013-10-17T21:14:14.087 回答
2

我想启动一个在每个目录中运行的 bash 脚本。

然后你可以简单地使用*

for i in *; do cd $i; ../script1.sh; cd ..; done
于 2013-10-17T21:23:14.387 回答
0

这样做的另一种方式(我的方式和最快的)

 for i in 000{1..21}; do cd ${i:(-4)}; ../script1.sh; cd ..; done
于 2013-10-17T22:42:53.307 回答
0

您可以((...))在 BASH 中使用:

for ((i=0; i<=21; i++)); do j=$(printf "%04d" $i); cd $j; ../script1.sh; cd ..; done
于 2013-10-17T21:17:15.553 回答