我想知道检查字符串是否为 $str 包含以下任何字符 !@#$%^&*()_+ 我曾想过使用 ASCII 值,但对具体如何实现有点困惑。 或者,如果有一种更简单的方法可以根据值检查字符串。 原文由 deadcell4 发布,翻译遵循 CC BY-SA 4.0 许可协议
将其与 glob 匹配。您只需要转义 shell 认为特殊的字符: #!/bin/bash str='some text with @ in it' if [[ $str == *['!'@#\$%^\&*()_+]* ]] then echo "It contains one of those" fi 原文由 that other guy 发布,翻译遵循 CC BY-SA 3.0 许可协议
这对于 Dash 等人来说是可移植的。恕我直言,更优雅。 case $str in *['!&()'@#$%^*_+]* ) echo yup ;; esac 原文由 tripleee 发布,翻译遵循 CC BY-SA 4.0 许可协议
将其与 glob 匹配。您只需要转义 shell 认为特殊的字符: