L'erreur de syntaxe vient du fait que tu as encadré ton script awk par des simples quote, et que le shell n'évalue pas les variables entre les simple quotes (contrairement aux double quotes). Donc ton $(...) est passé tel quel à awk, qui se chie dessus.
Solution :
echo "100 200" | awk '{ convB2($1) }
function(I){
x='"$(echo "obase=2; 100" | bc)"';
return $x }'
Ca devrait le faire.