На мой взгляд, потому что многие люди не понимают, что вы можете более или менее протестировать статус команды, как и вы. Точно так же люди тоже не понимают, что можно написать:
if cmd1
cmd2
cmd3
then
...do this after executing cmd1, cmd2 and cmd3, but ...
...only if cmd3 exits with with status 0!
fi
Вы также можете упростить свой код (за счет краткости) до:
cmd1 && cmd2
(я вижу, что @shin отметил это в комментарии, за который я проголосовал).
Я также вижу много кода оболочки 'Bourne', который использует:
if ( ... )
then ...
fi
Иногда это уместно - но чаще всего это вещи, которые программист оболочки C написал, не понимая, что обозначение означает «запустить под-оболочку» в оболочке Bourne и ее производных, таких как оболочка Korn, POSIX-совместимые оболочки, и Баш.