У тебя переменная «$AAA» резольвится в значение не командой echo, а шеллом, до запуска команды. Вот внутри самой echo (допустим, ты правишь /usr/bin/echo, и шелл не обрабатывает её как встроенную команду) доступ к значению $AAA так будет.
Для каждой команды сперва шелл раскрывает все переменные, джокеры и прочую фигню в значения, в том числе всякие [0-9]* в имена соответствующих файлов, и уже после этого запускает команду на исполнение. В твоём случае это всё является единой командой, поэтому раскрытие $AAA в её значение происходит до присваивания. Как верно сказали, присвой отдельной командой, потом вызывай echo — так будет работать: AAA=BBB ; echo "$AAA"