bash - 如何测试字符串是否不包含bash中的指定字母
问题描述
在我正在编写的程序中,我需要检查一个字符串是否包含不在另一个字符串中的字符,例如:
if [ $string ?? "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" ]; then
echo $string isnt alphanumeric
fi
或者
if [ $string ?? "ABCDEGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"]; then
echo $string isnt alphabetic
fi
??
神秘行动在哪里。
任何帮助,将不胜感激!
解决方案
在 bash 中,with[[...]]
和==
操作!=
符是模式匹配操作符,所以
validChars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
if [[ $string != *["$validChars"]* ]]; then
echo "$string does NOT contain any of $validChars"
fi
参考:https ://www.gnu.org/software/bash/manual/bash.html#index-_005b_005b
要测试一个字符串是否只包含 $validChars 中的字符,我们可以使用 bash 的扩展模式匹配
if [[ $string == +(["$validChars"]) ]]; then
echo "$string ONLY contains chars in $validChars"
fi
if [[ $string != +(["$validChars"]) ]]; then
echo "string is empty or contains some character not in $validChars"
fi
推荐阅读
- c# - 如何解决 C# 反射中的泛型方法歧义
- python - 在 python 中输入带有 selenium 的网站时,如何单击以关闭弹出窗口?
- javascript - React axios 将二进制数据发布到 Strapi
- python - 将 rpy2 python 包升级到 3.3.3 版本时出错
- c# - 如何使用 C# 从 SQL Server 获取参数输出并将值放入会话变量中
- hadoop - 集群主机的存储空间比 HDFS 似乎识别/有权访问的要多?如何增加 HDFS 存储使用?
- reactjs - React Popover 3rd-Party Out-Of-Window-View 问题
- discord.js - 尝试在 discord.js 中创建第二个命令处理程序时出现目录错误
- python - python中的概率函数
- git - “git show ..origin/master:somefile”和“git show origin/master:somefile”有什么区别