..to check if a line includes a subline..?

What would be the best way to check if a particular line (in variable) has an another line (more than 1 char)?

I understand it could be done with 'grep', 'sad', 'awk', by parameter expansion, but all these seems to me havy, worldy, not elegant and overhead in processing

For so common task I would expect something from shell, maybe, close to:

>a="string with piece to search"
>${a??"piece"} && echo "the string has a searched substring" || echo "not found"

... I used here a '??' as a, kind of, search operator (as '?' is used for another action.)
But I do not know anything like that. - Maybe I just do not know?
Otherwise,

what would be your best aproach to perform that simple action?

Thank you!

With all Bourne-type shells* you can use case and wildcards pattern matching (*I believe the csh family uses a different syntax):

a="string with piece to search"

case $a in
  *piece*) printf "OK\n";;
        *) printf "KO\n";;
esac

With ksh93, zsh and bash:

[[ $a == *piece* ]]&&printf "OK\n"||printf "KO\n"

With some versions of the above shells you can even match using regular expressions with the =~ operator.

Thank you, it is good: last 2 are pretty nice, the 'case' is interesting, too, but little wordy.
Neither one way did come to my mind.

In my bash the match operator works; so it is best:

> a="string with piece to search"
> [[ $a =~ piece ]] && ec da || ec net
da
>

Appreciate your addvice!