Вы должны указать оболочке, что она будет оценивать вашу команду дважды - один раз, чтобы превратить $ y в x, и снова, чтобы получить значение $ x. Самый портативный способ, который я знаю, это сделать с помощью eval:
$ /bin/sh
$ x=100
$ y=x
$ echo $y
x
$ eval echo \$$y
100
$
(вам нужно экранировать первый $ в строке eval, потому что в противном случае первая оценка заменит $$ на текущий pid)
Если вас интересует только bash, лучше всего подходит метод KennyTM.