在Unix操作系统中,说实话其字符串的处理功能实在不强 。如没有现成的length(获取字符串的长度)等函数 。要实现对字符串的操作,往往需要采用 expr命令结合相关的通配符来实现一些特定的功能 。虽然在Unix操作系统中,对于字符串的操作比较麻烦 。但是系统工程师只要知道各种处理方式特点与缺点,那么对症下药,仍然可以找到一些简单的方式来处理系统中的字符串问题 。
一、对用户输入的字符串长度进行验证 。
系统工程师有时候往往需要对用户输入的字符串长度进行验证 。如在设计一个登陆程序时,为了安全起见,可能需要限制用户密码输入的最小位数,如必须是六位以上的密码等等 。此时,其实就是统计用户输入的字符串长度问题 。如果用户输入的密码长度不够,就提醒用户;如果够的话,就直接保存用户输入的信息 。所以,简单的说这可以利用if语句或者while循环判断语句来实现 。而这个条件则可以利用expr关键字来实现 。
如果用判断用户输入的字符串长度,可以利用如下的格式来写 。Expr “$userpasswd : ’.*’ 即可 。在编写这个命令时,需要注意一些基本的规则 。如这个expr命令往往需要使用两个表达式,而且中间需要使用英文状态小的冒号进行分割 。而且这个两个表达式的顺序也有严格的限制 。冒号左边是需要处理的字符串(需要统计长度的字符串或者变量),而冒号右边则是普通的正则表达式 。其次,需要处理的字符串需要使用双引号括起来 。这里跟普通命令中字符串的处理方式有所不同 。在普通的命令中,变量不需要使用双引号因起来 。如果引起起来的话,则系统反而会将其当作常量来处理 。但是如果在if条件语句中将利用这个命令来统计字符串长度时,则需要将变量使用双引号引起来 。这个字符串处理上的差异需要注意,不少系统工程师在这里吃过亏 。第三,有时候正则表达式也需要利用单引号来引起来 。如上面的’.*’则表示所有匹配的字符 。如果不使用单引号的话,系统可能会提示语法错误 。
二、截取字符串 。
有时候系统管理员需要截取字符串的自串来完成特定的任务 。如现在系统工程师需要对某个文件根据系统的时间来进行命名,其命名的规则为年份(最后两位)加月份的形式,即0906表示这个文件是09年6月份创建的 。因为每个月创建一个独立的日志文件,为此按这个格式对其进行命名算是比较合理的 。但是在系统中实现起来有一定的困难 。然后通过date命令加上一些可选项参数可以截取日期的年份、月份等信息 。可是利用date命令截取的年份是四位数字(如 2009),而不是两位数字 。这跟系统工程师的需求还有一定的距离 。那么如果一定要采用年份的两位数字来对文件或者文件夹进行命名,该如何处理呢?
此时就需要用到expr命令的另一个功能,即截取字符串的功能 。一般来说,expr命令主要有三个功能,分别为求字符串的长度、截取字符子串、求一个字符在一个字符串中的位置 。当然如果这些功能跟其他命令结合使用的话,可以实现一些比较复杂的需求 。在Unix系统中,如果需要截取字符串的话,笔者首先建议的是采用一些自带的命令 。如date %w则表示显示今天星期几 。虽然expr命令也可以实现类似的功能,但是初期起来比较麻烦 。为此对于截取字符串笔者建议,能够使用系统自带功能来实现的,那么就使用系统自带的命令 。如果没有的话,那么就只有用过expr命令来实现 。也就是说,expr 是一个通用的命令,所有的字符串截取工作其都可以完成 。只是代码书写起来没有那些系统自带命令那么简单 。如果现在系统工程师需要截取年份的后两位数字,此时该如何处理呢?在系统转义字符的帮助下,可以完成这个功能 。如下所示:
推荐阅读
- vivoz1中添加联系人的简单步骤
- iqoo手机中将开发者模式开启具体操作步骤
- 鹿客智能门锁q2中设置一次性密码的简单步骤
- 华为p30pro中将后台应用关掉具体操作步骤
- vivoz1中添加桌面小挂件的操作步骤
- 我心目中的MPX200
- iPad中拆电池具体操作步骤
- SCO unix三种安装BTLD的方式
- ios12中打开就寝模式的操作步骤
- UNIX及SYBASE的安装