As you insert the value `new value is ${abc}`, the `${abc}` part is just a string of characters. This string is not reevaluated for expansions when you do `xyz=$@`.
To expand `${abc}` in the string, do the following in the script:
```
abc="something='123:234'"
eval "xyz=\"$1\""
printf '%s\n' "$xyz"
```
The `eval` takes a piece of shell code. The given code does `xyz="$1"`, but with `$1` replaced by the command line argument (the string `new value is ${abc}`). This is then reevaluated by the shell.