Is there a bash option or another way to make bash to only expand curly-braced variables like `${var}` and ignore regular ones like `$var`?

Update - here is why i want that:
I have a relatively large program written in pure bash and it has to stay in pure bash (it is an installer designed to run on most Linux distributions, we do not want to add additional dependencies).
It has a very simple template engine written in bash. Here is the template parsing code (all of it):

```
function apply_template() {
  local src=$1
  local dst=$2
  local code="
cat<<EOF
$(cat $src)
EOF
"
  eval "$code" > $dst
}

```

It is very simple yet very effective. We have 30 templates that are evaluated using this code. Here is an example:

```
[ {
  "host" : "${primary_node_ip}",
  "access" : {
    "type" : "ssh",
    "user" : "${user}",
    "key" : "id_rsa"
  } ]

```

Bash replaces variables with values, everything is fine.

The problem occurs when we have a template that has "$" signs that should not be treated as variables, for example an nginx config.
If fact it only happens in one template which is an nginx conf.

The perfect solution would be to enable this (non existent as i now know) mode in my "apply\_template" function.