Uma confusão sobre $ {array [*]} versus $ {array [@]} no contexto de conclusão de um bash

Estou tentando escrever uma conclusão de bash pela primeira vez e estou um pouco confuso sobre as duas maneiras de desreferenciar matrizes de bash ( ${array[@]}e${array[*]} ). Aqui está o trecho de código relevante (funciona, a propósito, mas gostaria de entendê-lo melhor): _switch() { local...