本文共 2210 字,大约阅读时间需要 7 分钟。
群友问了个问题:我shell,我怎么才只打出100,110,120.....190 201,211,......291 ,302,312,322....392 这种格式的数据
我这个会用在数据库,前面10个库,我如果是第一个库,我就会建表00 10 20 。。。90 。第二个库就用01 ,11 ,,,91
一个循环加一个if就可以,干嘛双循环呢
因为不管怎么变,步进都是10,所以根本没必要1个1个循环,10个10个就行
这时候就得考虑每到100的时候+1
所以就这么个思路
此处感谢潜艇大叔,提供思路。
110120130140150160170180190211221231241251261271281291312322332342352362372382392413423433443453463473483493514524534544554564574584594615625635645655665675685695716726736746756766776786796817827837847857867877887897918928938948958968978988998101910291039104910591069107910891099
注:(为了节约空间只显示到500)
[root@show scripts]# awk 'BEGIN{for(i=100;i<=500;i+=10){j++;print i;if(j%10==0)i++}}'100110120130140150160170180190201211221231241251261271281291302312322332342352362372382392403413423433443453463473483493
思路很简单,通过j变量控制循环,每10次 使得i的值+1(既i++)
目的是达到 201 302 403 这种效果。
[root@show scripts]# awk 'BEGIN{for(i=100;i<=500;i+=10){j++;print(j%10==0?i++:i)}}'100110120130140150160170180190201211221231241251261271281291302312322332342352362372382392403413423433443453463473483493
三目运算符:相当于if xxx ;then xxxx; xxx fi 条件判断。
也是很好的方法。
3.3 方法三-shell01-循环+判断
#!/bin/bashfor((i=100;i<=$1;i+=10))do let j++echo $i if [ $((j%10)) -eq 0 ];then let i++ fi done[root@show scripts]# sh seq.sh 500100110120130140150160170180190201211221231241251261271281291302312322332342352362372382392403413423433443453463473483493
awk可以做,其实shell也可以实现的。
思路一致的。
3.4方法四-shell02-循环+三目运算符
#!/bin/bashfor((i=100;i<=500;i+=10))do let j++ echo $((j%10==0?i++:i))done[root@show scripts]# sh seq.sh 500100110120130140150160170180190201211221231241251261271281291302312322332342352362372382392403413423433443453463473483493
shell也不甘示弱,我也有三目运算符啊。
#!/bin/bashfor((i=1;i<=5;i++))do for((j=10;j<=90;j+=10)) do middle=`printf %02d"$j"` num=$i$((middle+i-1)) echo $num donedone [root@show scripts]# sh seq2.sh110120130140150160170180190211221231241251261271281291312322332342352362372382392413423433443453463473483493514524534544554564574584594
最简单的思路,可是双层嵌套循环,没有效率。
第4章 总结
最核心的是算法,到底如何做。
一个循环,每十次自动加1.
难免有不足之处请大家指正谢谢。
转载地址:http://wbgzl.baihongyu.com/