What is the var={chr"$c"} supposed to produce?
What it does produce in this context is {chr1}, {chr2}, ..., {chr22}.
Note that the variable var is an awk variable and not a shell variable. You'd have to redirect to "{chr$c}.cbs" to get the 22 separate files. Within the script, $var will always be $0 since var evaluated as a number is 0.
Rather than running the command 22 times, you can surely do it all in one pass. Assuming that you are using gawk (GNU Awk) or awk on MacOS X (BSD) or any POSIX-compliant awk, you can write:
awk '$1 ~ /\{chr([1-9]|1[0-9]|2[012])\}/ {file=$1".cbs"; print $0 >file;}' hg19.gap.bed
This does the whole job in one pass through the data file.