如果变量小于10,尝试在varaible之前添加一个零,并创建该目录。我似乎不能正确地得到零。不断制造02.1.2011
,02.2.2011
等等
i=0
for i in {01..31}
do
if $i > 10
then
mkdir $path/02.0$i.2011
else
mkdir $path/02.$i.2011
fi
done
发布于 2018-03-27 14:05:46
你可以用:
for i in 0{1..9} {10..31} ; do
mkdir $path/02.$i.2011
done
尽管仍然不需要启动任何外部进程(除了循环体中的进程)。
这可能没那么重要这里自mkdir
不是那种你经常做的事情,但是如果在bash
。
当执行几十万次时,流程创建是很昂贵的,就像我的一些脚本偶尔做的那样:-)
例如,可以看到它的作用:
pax$ for i in 0{7..9} {10..12}; do echo $i; done
07
08
09
10
11
12
而且,如果你有一个最近-足够的版本bash
,它将满足要求:
序列表达式采用以下形式
{x..y[..incr]}
,在哪里x
和y
是整数或单个字符,并且incr
,一个可选的增量,是一个整数。当提供整数时,表达式扩展到x
和y
,包容。提供的整数可以以0
强制每个术语具有相同的宽度。当x
或y
以零开头,shell试图强制所有生成的术语包含相同的数字,必要时为零填充。
所以,在我的Debian 6盒子里bash
4.1.5版:
pax$ for i in {07..11} ; do echo $i ; done
07
08
09
10
11
https://stackoverflow.com/questions/-100003714
复制相似问题