すでに投稿された回答は確かに正しいですが、パラメーターの拡張が同じ目的を果たし、さらに柔軟性が増す場合があることに注意してください。
% p() { printf 'notvar = %b\n' "${notvar##"${string1}"}${string2}" ; }
% string1='some stuff about things\c'
% string2='some different stuff maybe'
% notvar="$string1" p
> 'some different stuff maybe'
% notvar="$string2" p
> 'some stuff about things'
わかりましたので、上記はそのままでは非常に便利ではありませんが、同様の方法を使用して、ヒアドキュメントで変数をテストしたり、必要に応じてインライン変数の割り当てを行ったりすることも検討してください (ある程度...)、または最初のステートメントを書くためのより短い (そしてより速い!) 手段と同じです。
[ ! "${var##"string"}" ] && _MATCH || _NOMATCH
あるいは...
[ ${#var#*"${s=string}"} -lt ${#var} ] && _SUB_STRING_TEST=TRUE
おそらく...
% p() { printf '%s is %s of %s' "$2" "${var_chk-not}" "$1"
> }<<HEREDOC
> ${in="${1##*"${2}"*}"}
> ${in:-
> ${in="${1##"${2}"}"}
> ${in:-${var_chk=all}
> ${var_chk=some}
> }
> HEREDOC
%