Я предполагаю, что экземпляр bash, в котором вы выполняете команду xterm, уже разрешает переменную $ANSWER
прежде чем передать ее в xterm.
Либо избегайте символа доллара, либо используйте одинарные кавычки вокруг выражений. Это похоже на работу в моем случае.
Обновление - синтаксис:
xterm -e "echo 123; читать ОТВЕТ; echo answer =\$ ANSWER; sleep 5"
или же
xterm -e 'echo 123; прочитайте ОТВЕТ; ответ отголоска = $ ANSWER; сон 5'
Это эквивалентно вашему синтаксису, если ANSWER пуст до вызова xterm:
xterm -e "echo 123; прочитайте ОТВЕТ; echo answer =; sleep 5"
Как видите, переменная преобразуется в значение и никогда не входит в xterm. Кроме того, bash, выполняемый внутри вашей команды xterm, полностью разделен, переменные или их значения изнутри не могут быть легко переданы за пределы его области видимости.