LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2061|回复: 17

在一个循环中如何依次输出a,b,c,d....x,y,z???

[复制链接]
发表于 2003-2-17 09:38:56 | 显示全部楼层 |阅读模式
如题
发表于 2003-2-17 14:59:11 | 显示全部楼层
笨法子是建立一个存有a-z的数组可以实现,但输出a...z有何意义?
 楼主| 发表于 2003-2-18 10:41:51 | 显示全部楼层
太笨
我想一定能象输出1,2,3,4,5,。。。一样简单的
不知如何实现?
发表于 2003-2-19 04:03:26 | 显示全部楼层
脚本如下:
  1. #! /bin/ksh
  2. #script name: lx
  3. num=101
  4. while (( num<=132))
  5. do
  6. echo -en $(echo "\0$num")
  7. ((num=num+1))
  8. done
  9. echo "\n"
复制代码
运行结果:
javalee//home/javalee/lx>lx
ABCDEF9HIJKLMNO89PQRSTUVW89XYZ
但是为什么G变成了9?还多了89???
是不是我的终端设置有问题?
望指点! 谢谢~~
发表于 2003-2-19 04:23:04 | 显示全部楼层
最初由 sjqu 发布
太笨
我想一定能象输出1,2,3,4,5,。。。一样简单的
不知如何实现?


呵呵,UNIX开始时就是KISS( keep it simple,stupid)
简单粗暴的方法往往是很有效,且稳定。
发表于 2003-2-19 09:01:11 | 显示全部楼层
看linux的内核代码会发现代码里有很多笨办法,如define一堆的常量数组。。。
笨的方法有时候反而最快,最有效,如暴力解密是现在最常用且有效的攻击方法。呵呵
发表于 2003-2-19 15:30:05 | 显示全部楼层
怎么大家那么喜欢暴力呀?
还没说我那个是咋回事呢?
运行结果:
javalee//home/javalee/lx>lx
ABCDEF9HIJKLMNO89PQRSTUVW89XYZ
但是为什么G变成了9?还多了89???
是不是我的终端设置有问题?
望指点! 谢谢~~
发表于 2003-2-19 16:30:53 | 显示全部楼层
你把十进制的数作为八进制数字使用,自然会出现错误。由于发现了在八进制中不允许出现的数字8、9,虽然有\0前缀,但已经把它作为十进制看待了,就像下面这样:
xie 0$ echo -e "\0106"
F
xie 0$ echo -e "\0107"
G
xie 0$ echo -e "\0108"
8
xie 0$ echo -e "\108"
8
发表于 2003-2-19 16:36:10 | 显示全部楼层
哦~~~对对对,那是八进制的*_*
那如何改进?请指点;)
发表于 2003-2-19 16:39:38 | 显示全部楼层

大家可以看看我的试验

xie 0$ for (( i = 100 ; i <= 132 ; i++ )); do echo -e "$i  \0$i"; done
100  @
101  A
102  B
103  C
104  D
105  E
106  F
107  G
108 8
109 9
110  H
111  I
112  J
113  K
114  L
115  M
116  N
117  O
118     8
119     9
120  P
121  Q
122  R
123  S
124  T
125  U
126  V
127  W
128
8
129
9
130  X
131  Y
132  Z

尤其是这个,就会更清楚了:
xie 0$ echo -e "abc\010def"
abdef
xie 0$
可以看到\010是退格,象\0108这样的字符串,系统把它分成了两个部分\010和8,前一个输出退格,后一个输出字符8,所以字符G消失了,并且出现了字符8。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表