> может что-то не так я делаю?Определённо. Например, пишете, что вылезает ошибка, а что за ошибка - целиком не приводите, а приводите какой-то её кусок. Кто её выдаёт - тоже не пишете, хотя вам bash говорит, что это он. Тем более, что сообщение по-русски, то есть все, у кого локаль настроена на английские сообщения, должны догадываться, от чего это мог бы быть кусок.
Также, зачем писать такой ужас, когда можно вместо первой строчки сделать так:
if netstat -nl | grep -q 8081
Конечно, блоки кода внутри if и else нужно будет поменять местами или добавить "!" после if.
Если планируется потом использовать скрипт на другой платформе, лучше вместо опции grep -q использовать "> /dev/null", так как не все grep'ы одинаково кошерны, но скорее всего для вас это не актуально.
Ещё рекомендую добавить опцию netstat --inet.
Что касается самой ошибки, то вероятно она из-за того, что результатом $(...) является строка с пробелом и проверка превращается во что-то вроде
if [ -z 8081 8081 ]
то есть является некорректной с точки зрения синтаксиса bash. Если уж делать так, то нужно взять $(...) в кавычки.