kkstar 发表于 2006-2-24 16:08:59

[求助] 大家来帮我看看代码啊!!!!

检查输入是否由字符构成

#characters
#$1=string
{
_LETTERS_ONLY=$1
_LETTERS_ONLY=`echo $1|awk '{if($0~/[^a-zA-Z]/) print "1"}'`
if [ "$_LETTERS_ONLY" != "" ]
then
return 1#非字符
else
return 0
fi
}

为什么单词串比如"abc "这样的能通过而"abc def" 不能通过?

lwf163 发表于 2006-2-24 18:04:04

在我这里可以啊,我把return改成exit写在一个脚本里,试了试,可以。你用 sh -x 脚本名试试,看输出是否符合你要运行脚本的意思。我也是刚学shell编程,还不熟。

kkstar 发表于 2006-2-24 18:45:54

在我这里可以啊,我把return改成exit写在一个脚本里,试了试,可以。你用 sh -x 脚本名试试,看输出是否符合你要运行脚本的意思。我也是刚学shell编程,还不熟。
呵呵 找到原因了 谢谢提醒 :D:D

decell 发表于 2006-3-2 20:27:47

是什么原因啊~~
我搞不出~~

bison_gao 发表于 2006-3-14 23:47:50

你的"abc def"中间是个空格当然不能通过了。

这种字符替换的功能,bash有内建命令,不需要动用awk,sed这样的外部程序。

${var/x/y} 将var中的第一个模式x替换为y
${var//x/y} 将var中的所有模式x替换为y


检查函数就可以写成

str="some string"
if [ "${str//[a-zA-Z]/}" == "" ]; then
echo "OK"
else
echo "Fail"
fi
页: [1]
查看完整版本: [求助] 大家来帮我看看代码啊!!!!