Bash имеет как арифметические, так и условные выражения.
Ответ, который дает sarnold, является способом заставить это работать, используя условное выражение, но если вы хотите использовать вместо этого арифметическое выражение, вы можете заменить
[ $? ]
с
(( $? ))
Если вы будете искать по этим темам справочные страницы bash, есть гораздо больше информации о том, как они работают.
edit: Моя ошибка, условные выражения[[]].(()) дает поведение, которое вы, вероятно, ожидали, хотя.