Embora não possa responder por que isso sempre foi avaliado como verdadeiro, consegui corrigi-lo. Acabei tendo que remover as aspas do switch, fazendo com que a versão de trabalho fosse assim:
myfunc(){
if [[ $1 == -c ]];
then
echo $1
fi
};
Por sugestão do Darth Android , basta manter as aspas consistentes entre as duas comparações, o que é mais seguro .
myfunc(){
if [[ "$1" == "-c" ]];
then
echo $1
fi
};