Isso deve funcionar:
#!/bin/sh
awk -v CONFIG_SOURCE=Testfile1.txt -f test.awk
re=$?
echo "$re"
if [ "$re" -eq 2 ]; then
echo >&2 "Some error"
fi
O problema no seu script foi o uso de echo $? antes de recval = $? . Com echo $? você imprimiu o valor de $? (o status de saída da última declaração), mas , então $? foi substituído de echo $? . O status de saída da última instrução foi, então, o status de saída de echo $? , provavelmente com 0.