当前位置:  开发笔记 > 编程语言 > 正文

添加零到单个数字变量

如何解决《添加零到单个数字变量》经验,为你挑选了3个好方法。



1> paxdiablo..:

您可以用以下内容替换整个批次:

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]},其中xy是整数或单个字符,incr可选的增量是整数.提供整数时,表达式将扩展为介于x和之间的每个数字y.提供的整数可以加上前缀,0以强制每个术语具有相同的宽度.当任何一个xy以零开始时,shell会尝试强制所有生成的术语包含相同数量的数字,必要时填充零.

所以,在我的Debian 6盒子上,bash版本4.1.5:

pax$ for i in {07..11} ; do echo $i ; done
07
08
09
10
11



2> Jesse Cohen..:

您可以使用

$(printf %02d $i)

用您想要的格式生成数字.

for i in $(seq 0 1 31)
do
    mkdir $path/02.$(printf %02d $i).2011
done


`seq -w`生成带前导零的数字.

3> Juliano..:

更好:

for i in $(seq -f %02g 1 31)
do
    mkdir "$path/02.$i.2011"
done

甚至:

for i in {01..31}
do
    mkdir "$path/02.$(printf "%02d" $i).2011"
done

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有