|
mygod |
发表于: 2001/11/19 11:38am
|
这样:echo $name | wc -c | read asd 这样name变量的长度就读到asd变量了,但是会比实际的长度多1 |
| |
|
rain0216 |
发表于: 2001/11/19 01:07pm
|
| 可是为什么我按照上述方法做,不能得到变量asd呢 |
| |
|
mygod |
发表于: 2001/11/19 01:13pm
|
| 还有一个更好的方法:echo $name | awk '{printf("%d",length($1))} | read asd |
| |
|
rain0216 |
发表于: 2001/11/19 01:21pm
|
| 仍然不能读到变量中 |
| |
|
mygod |
发表于: 2001/11/19 01:28pm
|
| 不可能,我作过实验的!把你取asd的程序贴一下! |
| |
|
rain0216 |
发表于: 2001/11/19 01:33pm
|
#!/bin/sh echo -n "Input ID (Ex. : ca0001): " read STR name=$STR echo "" echo $name | awk '{printf("%d",length($1))}'| read length echo $length while [ "$length" != "6" ] do echo "Please input ID in correct format!" read STR name=$STR done echo "succeed"
|
| |
|
mygod |
发表于: 2001/11/19 01:47pm
|
| echo $length的结果是什么? |
| |
|
rain0216 |
发表于: 2001/11/19 01:52pm
|
| 什么也没有,为一空行 |
| |
|
mygod |
发表于: 2001/11/19 02:01pm
|
| 用短消息! |
| |
|
mygod |
发表于: 2001/11/19 04:47pm
|
换一种写法: length=`echo $name | awk '{printf("%d",length($1))}'` 其中`号为“1”键左边的键
|
| |
|
shuweich |
发表于: 2001/12/01 01:04pm
|
# name='Zhang lao san' # echo $name | awk '{printf("%d",length($0))}' | read asd # echo $asd 13 # # #感觉怎么样? |
| |
|
henry |
发表于: 2001/12/01 08:27pm
|
rain0216: 按照你的脚本的逻辑,如果首次输入的长度不是6是会死循环的呀。难道没有吗? 应该将 echo "" echo $name | awk '{printf("%d",length($1))}'| read length echo $length 放到while循环体里边才是。 |
| |
|
rain0216 |
发表于: 2001/12/10 02:55pm
|
| 不会啊,循环里面是交互的啊,只要符合条件就可以退出循环的 |
| |
|
zho0798 |
发表于: 2001/12/22 00:05am
|
read name asd=`echo $name|awk '{printf("%d",length($1))}'` echo 你刚输的变量长度为$asd
|
| |
|
addwin |
发表于: 2001/12/25 09:35pm
|
刚刚加入,请各位多多指教! 前面的朋友说得没错,会死循环,变量$length应该在循环里面重新赋值! |
| |
|
zguest |
发表于: 2001/12/26 09:39am
|
各位,可以试一下下面的代码: read name len=`awk -v tname=$name 'BEGIN { print length(tname)}'` print "Length is :" len |
| |
|
shuweich |
发表于: 2001/12/26 02:19pm
|
asd=`expr length $name` echo $asd |
| |
|
HAZE |
发表于: 2002/01/12 09:14am
|
怎么会不是死循环?按你脚本的逻辑,第一次进入循环的是非法串长,在循环体内又没有一条语句来修改这个非法串长就成了死循环,所以还是要将read name echo $name |awk '{printf("%d",length($1))}' |read ad 放在循环内。
|
| |
|
rain0216 |
发表于: 2002/01/14 09:53am
|
| 哦,是的,当时代码没有没有写完整,而我自己用的是完整的,所以就想当然以为这段也没错了。多谢各位提醒 |
| |
|
戈壁 |
发表于: 2002/06/23 03:01pm
|
ksh中: echo ${#$name} |
| |
|
AIXSCO我 |
发表于: 2002/06/23 03:16pm
|
try this way : #env $string |wc |
| |
|
戈壁 |
发表于: 2002/06/23 03:39pm
|
如果是ksh: echo ${#$name} |
| |
|
neowei |
发表于: 2002/07/26 01:49pm
|
| obviously, it is a dead loop |
| |
|
|