shell编程如何判断一个字符串是否只是由字母数字下划线组成?

shell编程如何判断一个字符串是否只是由字母数字下划线组成?

比如判断111.sh xxx
要求xxx不能带特殊符号@#$%等等...      
复制内容到剪贴板
代码:
[color=blue]-(guest@mac:tty1)-(root)-
[5970 0] %[/color] name=a_b
[color=blue]-(guest@mac:tty1)-(root)-
[5970 0] %[/color] if echo "$name" | grep -q '^[a-zA-Z0-9_]\+$'; then echo ok; else echo invalid; fi
ok
[color=blue]-(guest@mac:tty1)-(root)-
[5970 0] %[/color] name=a-b
[color=blue]-(guest@mac:tty1)-(root)-
[5970 0] %[/color] if echo "$name" | grep -q '^[a-zA-Z0-9_]\+$'; then echo ok; else echo invalid; fi
invalid
[color=blue]-(guest@mac:tty1)-(root)-
[5970 0] %[/color]
      
这里的版主简直太可爱了 ^o^      
[QUOTE=lento]这里的版主简直太可爱了 ^o^[/QUOTE]
oh? 何出此言?