尝试验证字符串中只包含小写,大写或数字.
if ! [[ "$TITLE" =~ ^[a-zA-Z0-9]+$]]; then echo "INVALID"; fi
思考?
*更新*
变量TITLE目前只有大写文本,所以它应该通过,不应输出任何内容.但是,如果我向TITLE添加一个特殊字符,IF语句应该捕获它并回显INVALID.目前它不起作用.它总是回声无效.我认为这是因为我的正则表达式是错误的.我想我写它的方式,它寻找一个包含所有三个标题的标题.
Bash 4.2.25
这个想法是,用户应该能够添加任何标题,只要它只包含大写,小写或数字.所有其他角色都应该失败.
*更新*
如果TITLE = ThisIsAValidTitle它回声无效.
如果TITLE = ThisIs @@@@@@@ InvalidTitle,它也无效.
*解决方案*
很奇怪,当我简化它时,它开始工作了:
TEST="Valid0" if ! [[ "$TEST" =~ [^a-zA-Z0-9] ]]; then echo "VALID" else echo "INVALID" fi
*真正解决方案*
我的变量中有空格…… DUH
对不起麻烦的家伙……
*最终解决方案*
这说明了标题中的空格
if ! [[ "$TITLE" =~ [^a-zA-Z0-9\ ] ]]; then echo "VALID" else echo "INVALID" fi
解决方法
我会颠倒逻辑.测试无效字符并在至少存在一个警告时回显警告:
if [[ "$TITLE" =~ [^a-zA-Z0-9] ]]; then echo "INVALID" fi
话虽如此,您的原始支票对我有用,因此您可能需要提供更多上下文(即脚本的更大部分).