this rather look a shell problem, have you tried .. ?
vth=$(echo "$inn" | awk -F ' '"$number"': |@' '{print $2}')
* be sure to have your shell as a bash (e.g. first line is `#!/bin/bash` )
* if you don't need `$inn` elsewhere, use `vth=$( ip ad | ... )`
* I can't reproduce `@` in result of `ip a s` (or `ip ad` )
to catch lan interface name number `$number` I would use
vth=$(ip a s | awk -F'[: @]' -v n="$number" '$1 == n { print $3 ; exit; }' )
* * *
Note that result of `ip a s` is not meant to be parsable.
there is a `-j` option in `ip` to produce a json script that might be easier to parse with `jq` utility.