该脚本用于实现对输入内容的检验,如果输入中只包含字母和数字返回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表示全局匹配。