代码:
[[ " ${arr[*]} " == *" "[^a]" "* ]] && echo "array has non-a element" || echo "All a elements"
如果我试图查看是否存在不包含" a"的数组元素,效果很好。
例如: arr =(a a a c)
返回: 数组有非元素
我想改变上面的代码,以便能够看到是否有一个元素不包含" CA"在一个看起来像:
的数组中arr =(CA CA CA AC)
或
arr =(CA CA CA BC AB)
或
(KL CA CA CA)
答案 0 :(得分:1)
您可以printf
使用grep -zEqv
(gnu-grep):
$ arr=(CA CA CA BC AB)
$ printf "%s\0" "${arr[@]}" | grep -zEvq "^CA$" &&
echo "array has non-CA element" || echo "All CA elements"
array has non-CA element
$ arr=( CA CA CA $'CA\nCA' )
$ printf "%s\0" "${arr[@]}" | grep -zEvq "^CA$" &&
echo "array has non-CA element" || echo "All CA elements"
array has non-CA element
$ arr=(CA CA CA)
$ printf "%s\0" "${arr[@]}" | grep -zEvq "^CA$" &&
echo "array has non-CA element" || echo "All CA elements"
All CA elements
答案 1 :(得分:0)
只需使用!=
:
[[ "${arr[*]}" != *CA* ]]