如何校验参数$1是否为3位全大写字符串
参数校验逻辑实现
Shell 环境下实现方案
方案1:Bash 专属正则匹配(性能最优,常用场景首选)
直接利用 Bash 内置的[[ ]]语法搭配正则规则完成校验,无需调用外部命令:
# 校验逻辑 if [[ $1 =~ ^[A-Z]{3}$ ]]; then # 符合规则后的业务逻辑 echo "valid" else # 不符合规则后的异常处理逻辑 echo "invalid" fi
规则说明:正则^[A-Z]{3}$中,^匹配字符串起始位置,[A-Z]限定只能是大写英文字母,{3}限定字符长度恰好为3,$匹配字符串结束位置,避免出现超长字符串前缀匹配通过的问题。
方案2:POSIX 标准兼容实现(适配所有类Unix Shell环境)
如果需要在sh等不支持 Bash 专属语法的环境运行,可以借助grep命令实现:
if echo "$1" | grep -qE '^[A-Z]{3}$'; then echo "valid" else echo "invalid" fi
参数说明:-q参数让grep不输出匹配结果,仅返回匹配状态码;-E开启扩展正则支持,简化写法。
测试验证用例
你可以用以下示例快速验证逻辑正确性:
- 符合规则的输入:
ABG、GTD,返回valid - 不符合规则的输入:
abg(小写)、AB1(含数字)、ABCD(长度4)、AB(长度2)、A C(含空格),均返回invalid
内容的提问来源于stack exchange,提问作者Tenko
相关产品推荐
相关产品推荐

