echo $? - Предоставляет СТАТУС ВЫХОДА самой последней выполненной команды .Это СОСТОЯНИЕ ВЫХОДА, скорее всего, будет числом с НУЛЕМ, подразумевающим Успех и любым НЕУКАЗАТЕЛЬНЫМ значением, указывающим Сбой
? - это один специальный параметр / переменная в bash.
$? - он дает значение, хранящееся в переменной "?".
Некоторые похожие специальные параметрыв BASH - 1,2, *, # (обычно в команде echo обозначаются как $ 1, $ 2, $ *, $ # и т. д.).