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

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

检查输入是否由字符构成
[code:1]
#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
}
[/code:1]
为什么单词串比如"abc "这样的能通过而"abc def" 不能通过?
在我这里可以啊,我把return改成exit写在一个脚本里,试了试,可以。你用 sh -x 脚本名  试试,看输出是否符合你要运行脚本的意思。我也是刚学shell编程,还不熟。
[quote:2d5c811060="lwf163"]在我这里可以啊,我把return改成exit写在一个脚本里,试了试,可以。你用 sh -x 脚本名  试试,看输出是否符合你要运行脚本的意思。我也是刚学shell编程,还不熟。[/quote]
呵呵 找到原因了 谢谢提醒 :D  :D
是什么原因啊~~
我搞不出~~
你的"abc def"中间是个空格当然不能通过了。

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

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

    检查函数就可以写成
    [code:1]
    str="some string"
    if [ "${str//[a-zA-Z]/}" == "" ]; then
      echo "OK"
    else
      echo "Fail"
    fi
    [/code:1]