для присваивания значения не нужно указывать доллар перед переменной. Доллар означает обращение к значению.
read -p "please input first MAC: " A
Теперь копнем чуть глубже, почему не выдает синтаксическую ошибку:
Баш работает следующим образом. Сперва происходит bash expansion - подставляются значение переменных, раскрываются скобки, маски файлов, и так далее- создание окончательной командной строки, а уже потом происходит ее выполнение.
В данном случае $A еще не задана, она пустая, поэтому на этом месте подставится пустое значение и выполнится команда
read -p "please input first MAC: "
В ней нет синтаксических ошибок. Просто если не указывать имя переменной, то read по умолчанию прочитает значение в переменную $REPLY