读《shell脚本实战》(2) —— validalnum

该脚本用于实现对输入内容的检验,如果输入中只包含字母和数字返回0,否则返回1。

#! /bin/bash
# validAlphaNum -- 确保输入内容仅包含英文字母和数字

validAlphaNum()
{
        # 基本思路是删除输入中字母数字以外的东西,然后对比结果和原输入是否相同
        validchars="$(echo $1 | sed -e 's/[^[:alnum:]]//g')"
        # 注意变量赋值的时候等号前面不能又空格,否则变量名会被解释为函数
        if [ "$validchars" = "$1" ] ; then
                return 0
        else
                return 1
        fi
}

# 下面这些是测试内容,如果该脚本作为库在其他脚本中调用,下面的代码要删除

/bin/echo -n "Enter input: "
read input

if ! validAlphaNum "$input" ; then
        echo "Your input must consist of only letters and numbers." >&2
        exit 1
else
        echo "Input is valid."
fi

exit 0

注意:

1.echo -n指定输出后不自动换行

2.实现校验的基本思路是将输入内容中字母数字外的全部字符删除,得到的结果和原始输入比较,如果相同则表示输入只包含字母数字。这种删除非法字符,观察剩下内容的做法在类似问题中很有效。

3.sed的子命令 s/source/destination/g 用于将一行文本中和source模式匹配的子字符串替换为destination,结尾的g表示全局匹配。

发布了7 篇原创文章 · 获赞 8 · 访问量 191

猜你喜欢

转载自blog.csdn.net/cxm2643199642/article/details/103795795
今日推荐