shell编程字符串问题

aaronz 2005-04-06 12:28:14
请教如何判断读入的一个字符串(如人名)合法?‘合法’定义为:此字符串只包含有字母或空格。此字符串的长度不定.
...全文
381 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
aaronz 2005-04-06
  • 打赏
  • 举报
回复
read name

case $name in
XXX) 合法
*) 不合法
esac

这样能行吗?靠正则表达式? 要求name可以包含空格

想不出了....
aaronz 2005-04-06
  • 打赏
  • 举报
回复
求...救...
Wolf0403 2005-04-06
  • 打赏
  • 举报
回复
抱歉,你说的是只包含字符和空格。。。如果包含数字,应该把 alpha 改成 alnum
aaronz 2005-04-06
  • 打赏
  • 举报
回复
非常感谢各位!问题解决了.
qfxx 2005-04-06
  • 打赏
  • 举报
回复
up
aaronz 2005-04-06
  • 打赏
  • 举报
回复
哦...失误,上面的错误是因为我漏了一个双引号... if [ "l_name" == ... ]

现在的错误是 egrep: -o: no such file or directry
[: ==] unknown operand

第一个错是要把参数-o写在 egrep 后面把?
aaronz 2005-04-06
  • 打赏
  • 举报
回复
谢谢,但是好象不行...T_T

echo -e "Last Name:\c"
read l_name
if [ $l_name" == "$(echo $l_name | egrep '[[:alpha:] ]+' -o)" ] ; then
echo "right"
else echo "wrong"
fi

比如我输入: zhang
错误为: 在 if [] 的这行有错: Unterminated quoted string

我不太懂为什么这样就能判断了呢? 空格就[ ]这样表示吗?

要求是比如
输入: Zhang
结果: right

输入: zh ang
结果: right

输入: zh123
结果: wrong

输入: zh 123
结果: wrong
brothersun0116 2005-04-06
  • 打赏
  • 举报
回复
学习学习……
gdream 2005-04-06
  • 打赏
  • 举报
回复
s="123 456 abc efg"

len=`echo $s | awk '{print length( $0 )}'`

start=1

while [ $start -le $len ]
do
char=`echo $s | cut -c$start-$start`

echo $char

case $char in
[0-9])
echo digital;;
[a-z])
echo letter;;
' ')
echo space;;
*)
echo error;;
esac

start=`expr $start + 1`
done

Wolf0403 2005-04-06
  • 打赏
  • 举报
回复
read name
test "$name" == "$(echo $name | egrep '[[:alpha:] ]+' -o)"

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧