arrayA=( ab xy )
arrayB=( abkpi xyert )
我需要将arrayA
的模式搜索到arrayB
。如果任何模式与arrayB
不匹配,则脚本应在bash shell中返回标记false
。
答案 0 :(得分:0)
您可能需要提供有关您要执行的操作的更多信息 如果我们从字面上理解你的话:“如果任何模式与arrayB不匹配,脚本应该在bash shell中返回false标志。”那么这可以这样做:
root@debi64: A=( ab xy );B=( abkpi xyert );for Ad in "${A[@]}";do if [[ "${B[@]}" =~ "$Ad" ]];then echo "$Ad found in array B";else echo "$Ad not found in Array B";fi;done
ab found in array B
xy found in array B
root@debi64: A=( aa xy );B=( abkpi xyert );for Ad in "${A[@]}";do if [[ "${B[@]}" =~ "$Ad" ]];then echo "$Ad found in array B";else echo "$Ad not found in Array B";fi;done
aa not found in Array B
xy found in array B
root@debi64:A=( ab xx );B=( abkpi xyert );for Ad in "${A[@]}";do if [[ "${B[@]}" =~ "$Ad" ]];then echo "$Ad found in array B";else echo "$Ad not found in Array B";fi;done
ab found in array B
xx not found in Array B
root@debi64:A=( ak xt );B=( abkpi xyert );for Ad in "${A[@]}";do if [[ "${B[@]}" =~ "$Ad" ]];then echo "$Ad found in array B";else echo "$Ad not found in Array B";fi;done
ak not found in Array B
xt not found in Array B
但这足以实现你的目标吗? 我怀疑不是。
答案 1 :(得分:0)
使用awk。使用进程替换将数组读入awk。 在另一个数组中找到所有项目的示例:
$ awk -v RS=' ' 'NR==FNR{a[$1];next} !($1 in a){exit 1}' <(echo ${arrayA[*]}) <(echo ${arrayA[*]})
$ echo $?
0
和另一个没有找到的人。 Awk退出并返回1
符合arrayB
中不在arrayA
中的第一项:
$ awk -v RS=' ' 'NR==FNR{a[$1];next} !($1 in a){exit 1}' <(echo ${arrayA[*]}) <(echo ${arrayB[*]})
$ echo $?
1