If you are looking to make this work as it appears you intend it to, use a different signal, such as SIGUSR1:
### firstScript.sh ###
trap 'kill $pid;' SIGUSR1
for ((i=1; i<=10; i++))
do
echo "$i x $1 = `expr $i \* $1`"
sleep 10 &
pid=$!
wait $!
done
And:
### secondScript.sh ###
./firstScript.sh 5 &
pid=$!
echo $pid
ps
for (( i=0; i<8; i++))
do
kill -USR1 $pid
sleep 3
done
I have spent some time trying to figure out why SIGINT is behaving the way it does, but have not been able to yet.