()
запускает команду внутри скобок в подоболочке, вам нужно арифметическое расширение $ (())
:
$ t=20
$ s=$((t+30))
$ echo "$s"
50
Решение на основе синтаксического анализатора XML - это правильный выбор. Тем не менее, здесь можно быстро взломать регулярное выражение:
LOGIN=...
printf "$LOGIN" |
perl -nE 'say "-d $1=$2" if /name="(.*?)".*?value="(.*)"/'