sh - 搜索多个子字符串的变量
问题描述
在 BSD 系统上工作并且很难搜索变量以查看它是否包含多个不同子字符串中的任何一个。这就是我所拥有的:
> echo $lenck if test "${lenck#*$pattern1}" != "$lenck";
> then
> if test "${lenck#*$pattern2}" != "$lenck";
> then
> echo "Invalid or corrupted IP or process"
> echo $lenck | tee -a invalid.txt
> else
> pat2out=$lenck
> if test "${pat2out#*$pattern3}" != "$pat2out";
> then
> echo "Invalid or corrupted IP or process"
> echo $pat2out | tee -a invalid.txt
> else
> pat3out=$pat2out
> if test "${pat3out#*$pattern4}" != "$pat3out";
> then
> echo "Invalid or corrupted IP or process"
> echo $pat3out | tee -a invalid.txt
> else
> echo $pat3out | tee -a processed.txt
> fi
> fi
> fi
>
> else
> echo "Invalid or corrupted IP or process"
> echo $lenck | tee -a invalid.txt fi
问题是我需要能够搜索超过四种模式。尝试了 grep -e 和其他方法,但它们没有正确地将字符串过滤到正确的文件中。任何帮助表示赞赏。
解决方案
看起来您的所有测试实际上都针对相同的输入字符串进行测试,因此您可以使用case 语句:
echo "$lenck"
case "$lenck" in
*$pattern1*|*$pattern2*|*$pattern3*)
echo "Invalid or corrupted IP or process"
echo "$lenck" >> invalid.txt
;;
*)
echo "$lenck" >> processed.txt
;;
esac
推荐阅读
- laravel - 获取成型机的可用性
- r - 使用 mtry 运行 randomForest
- python - 返回类实例的子类方法的类型注释
- angular - Angular 自定义指令没有任何效果
- javascript - 保持多个 onClick 事件独立但正常运行
- java - 在运行时动态编译多个 Scala 类
- java - 使用注释@SQL 预加载用于测试目的的数据库
- json - 将从 spring-boot 检索到的数据转换为 JSON 并在 Angular 前端获取它
- java - 使用 Spring 数据 Mongo 在嵌入式数组中搜索文本列表
- reactjs - 为什么每次我创建反应应用程序并使用“npm start”运行时都会在命令行中出现此错误?