我正在向现有脚本添加一项功能,以允许用户配置Linux系统的主机名。是我在强制执行规则如下:如何确保Bash字符串是字母数字,没有下划线?
- 必须长
- 不能同时启动或用连字符
- 只能包含字母数字字符和连字符结束2到63个字符之间;所有其它字符不允许(包括下划线,这意味着我不能使用\ W正则表达式符号)
我已经解决了该列表中的前两个,但我无法找出如何检查一个bash字符串是否只包含字母,数字和连字符。我想我可以用一个正则表达式来做这件事,但我很难弄清楚(我过去的一小时在网上搜索和阅读手册页)。
我可以使用sed,grep或任何其他标准工具,但不能使用Perl或Python。
如何使用第二个表达式使用grep办呢?我正在寻找手册页中的开关,但没有成功:我回应一个应该匹配的字符串,并且没有输出。 – 2009-08-04 19:42:36
@Montecristo:'grep -E'或'egrep' – Welbog 2009-08-04 19:51:35
我试过了:echo 1asdas * _- | grep -E'^ [[:alnum:]] [ - [:alnum:]] {0,61} [[:alnum:]] $',没有输出(也没有单引号),大声笑我应该问一个问题我认为...:P – 2009-08-04 20:07:27