You don’t want to be passing 1 and 2 in the environment. The shell wants them as positional parameters. So you could do:
char *parmList[] = {"sh", "-c", "echo $0 $1 + $2 1 2", "sh", "1", "2", NULL};
CLICK HERE to find out more related problems solutions.