sh/bash/dash/ksh/zsh等Shell脚本
-
kinzess
- 帖子: 319
- 注册时间: 2007-04-11 10:39
#1
帖子
由 kinzess » 2008-06-10 17:59
01要怎么变成02,03,04。。。0n。。。10,11,12?
001要怎么变成002,003,004。。。00n,010,011,012。。。100?
怎么变才方便呢?
谢谢

厄。。
就是说像自增一样。。
不过表达有点不同。。。
不是1,2,3这种形式
而01或者001这种形式是自增不了的
上次由
kinzess 在 2008-06-11 0:10,总共编辑 5 次。
-
BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
-
联系:
#3
帖子
由 BigSnake.NET » 2008-06-10 18:15
代码: 全选
for i in `seq 100` ; do printf '%0.3d\n' $i ; done
这样?
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
-
kinzess
- 帖子: 319
- 注册时间: 2007-04-11 10:39
#4
帖子
由 kinzess » 2008-06-10 18:19
BigSnake.NET 写了:代码: 全选
for i in `seq 100` ; do printf '%0.3d\n' $i ; done
这样?
就是这样~~
谢谢大蛇~~
-
kinzess
- 帖子: 319
- 注册时间: 2007-04-11 10:39
#5
帖子
由 kinzess » 2008-06-10 18:27
类似自增的效果上面的可以达到
那如果自减呢?
-
kinzess
- 帖子: 319
- 注册时间: 2007-04-11 10:39
#6
帖子
由 kinzess » 2008-06-10 18:29
厄
找到了~~
seq -f "%02g" 100 -1 1
seq果然好用~~再次谢谢大蛇
-
kinzess
- 帖子: 319
- 注册时间: 2007-04-11 10:39
#8
帖子
由 kinzess » 2008-06-10 18:52
在问一下~~有没有办法做到
i++;
i--;
这样的效果的方法?
因为我不想一直用循环。。。
因为我有可能用到
当使用001时候我可能同时要用到02
而当使用002时我可能同时要用到03
或者用010时用到07;
当使用到009是要用到08;
而用循环这样的效果无法达到。。
上次由
kinzess 在 2008-06-10 19:04,总共编辑 1 次。
-
solcomo
- 帖子: 2838
- 注册时间: 2007-04-25 13:12
#9
帖子
由 solcomo » 2008-06-10 19:01
for (( i=100 ; i > 0 ; i--)) ; do printf '%0.3d\n' $i ; done
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖
☠☯⚔
☣☦☃
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
-
vvvli
- 帖子: 441
- 注册时间: 2006-10-26 7:02
#10
帖子
由 vvvli » 2008-06-10 19:07
kinzess 写了:在问一下~~有没有办法做到
i++;
i--;
这样的效果的方法?
因为我不想一直用循环。。。
因为我有可能用到
当使用001时候我可能同时要用到02
而当使用002时我可能同时要用到03
或者用010时用到07;
当使用到009是要用到08;
比如
x=10
echo $((x=x+1))
x=`printf '%0.3d\n' $x`
大概就是这样。
-
kinzess
- 帖子: 319
- 注册时间: 2007-04-11 10:39
#11
帖子
由 kinzess » 2008-06-10 19:16
vvvli 写了:kinzess 写了:在问一下~~有没有办法做到
i++;
i--;
这样的效果的方法?
因为我不想一直用循环。。。
因为我有可能用到
当使用001时候我可能同时要用到02
而当使用002时我可能同时要用到03
或者用010时用到07;
当使用到009是要用到08;
比如
x=10
echo $((x=x+1))
x=`printf '%0.3d\n' $x`
大概就是这样。
这样之后x=011
然后呢?
我要x=012呢?
如果这个是循环的话x=011,因为这是个八进制的数,那下一步如果遇到有8,9的话
echo $((x=x+1))就会出错
例如
bash: 008: value too great for base (error token is "008")
-
kinzess
- 帖子: 319
- 注册时间: 2007-04-11 10:39
#12
帖子
由 kinzess » 2008-06-10 19:24
我现在用的恶心方法是
把数字前面的0去掉
然后自增或者自减。。。
搞完再把0加回去。。。

-
laborer
- 帖子: 1016
- 注册时间: 2005-10-25 11:15
-
联系:
#13
帖子
由 laborer » 2008-06-10 23:12
代码: 全选
$ a=0089
$ a=`printf "%0${#a}d" $(dc -e "$a 1 + p")`
$ echo $a
0090
$ a=`printf "%0${#a}d" $(dc -e "$a 1 + p")`
$ echo $a
0091
hreiser@oakland:~$ killall -9 wife
police@oakland:~$ sudo find / -user hreiser
court@oakland:~$ sudo mv /home/hreiser /jail/
court@oakland:~$ sudo usermod -d /jail/hreiser -s "/usr/sbin/chroot /jail/" hreiser
-
yjcong
- 帖子: 2470
- 注册时间: 2006-02-28 3:11
#15
帖子
由 yjcong » 2008-06-13 7:21
如果要生成 abde01.jpg abced02.jpg abced03.jpg 该怎么做啊?如果想把生成的东西写到文件里又该如何??