shell - 如果它们包含相同的数字,我如何检查 3 个列表
问题描述
我有一个快速的问题:我应该编写一个 Shellscript 脚本,我可以在其中放置 3 个参数,然后该脚本应该查看这 3 个列表并挑选出相同的数字。我继续编写了这个脚本,但我不能真正让它工作:
#!/bin/bash
Parameter1=${1}
Parameter2=${2}
Parameter3=${3}
for var in $Parameter3; do
for var2 in $Parameter2; do
if [ $var == $var2 ]; then
for var3 in $Parameter; do
if [ $var2 == $var3 ]; then
echo $var3
fi
done
fi
done
done
解决方案
最简单的方法是space
在 and 的开头和结尾添加 a Paremeter2
,Parameter3
因此您可以循环输入数字Parameter1
并[[...]]
与=~
运算符一起使用来检查当前数字是否在单个循环中的单个复杂命令和单个复杂命令中Parameter1
退出,例如Parameter2
Parameter3
#!/bin/bash
Parameter1=${1:-"1 3 5 7 9 11 13"} ## default numbers if no arguments provided
Parameter2=${2:-"0 4 11 21"}
Parameter3=${3:-"6 11 16 21 26"}
Parameter2=" $Parameter2 " ## add space before/after 2 & 3
Parameter3=" $Parameter3 "
common= ## empty common value variable
for i in $Parameter1; do ## loop over numbers in 1
## compare with numbers in 2 and 3
[[ $Parameter2 =~ " $i " ]] && [[ $Parameter3 =~ " $i " ]] && {
common=$i ## set common value, if found
break
}
done
echo "common $common"
通过space
在 and 的开头和结尾添加Parameter2
,Parameter3
您可以将" $i "
其用作正则表达式来确定该数字是否存在于Parameter2
和Parameter3
with 中:
[[ $Parameter2 =~ " $i " ]] && [[ $Parameter3 =~ " $i " ]]
尝试 3 嵌套循环要容易得多。
示例使用/输出
将上面的脚本另存为common-of-3.sh
,您将执行以下操作:
$ bash common-of-3.sh
common 11
11
对所有三个参数都是通用的。您可以添加检查[ -z "$common" ]
并测试是否没有匹配并输出您喜欢的任何内容。
如果您还有其他问题,请告诉我。
推荐阅读
- hive - 如何在 hive 中使用 array_contains
- git - git hooks 和 Azure DevOps 管道有什么区别?
- python - 为#n-queries 之间的查询和比较设计一个高效的工具
- matlab - vpasolve More Unknowns than Equations => No Solutions
- airflow - 为气流参数化或循环列表
- google-apps-script - 创建一个按钮,用于清除特定单元格并将数据从 Google 表格中的一列移动到另一列
- javascript - 为什么我的代码无法随机使用外部变量?
- python - 使用 python 和 selenium 抓取 ebay 下拉文本
- android - 从具有平面视图层次结构的多个水平链创建垂直链 ConstraintLayout
- amazon-web-services - 使用 AWS“本机服务”或我需要的 docker 镜像?