Bash判断变量值是否在数组内的随记

来自三线的随记

数组基本操作

[root@router ~]# array=(
> 123
> 456
> 789
> )

[root@router ~]# echo ${array[*]}
123 456 789

[root@router ~]# echo ${array[@]}
123 456 789

[root@router ~]# echo ${#array[@]}
3


判断变量是否在数组内

Method 1

echo "${array[@]}" | grep -wq "$var" &&  echo "Yes" || echo "No"


Method 2

for i in ${array[@]}
do
   [ "$i" == "$var" ] && echo "yes"
done


Method 3

[[ ${array[@]/${var}/} != ${array[@]} ]] && echo "Yes" || echo "No"

Question: diff ?

[[ ${array[@]/${var}} != ${array[@]} ]] && echo "Yes" || echo "No"

What is the principle ??