O erro unary operator expected provavelmente foi devido a $PIDofP não estar entre aspas na condicional. Nesse caso, quando $PIDofP é uma string vazia, o shell não vê nenhum valor no lado esquerdo de = em vez de um valor em branco, daí a mensagem de erro.
O snippet a seguir implementa a lógica de comparação do PID corretamente por meio do uso de if / elif / else , o que garante que apenas uma das três possíveis echo de saídas seja gerada. Ele usa a sintaxe de comparação POSIX (consulte Qual é a diferença entre colchetes duplos e simples no bash? ).
#!/bin/sh
NAME=syslogd
PID=/var/run/$NAME.pid
PIDofP='pidof $NAME'
if [ "$PIDofP" = "" ]; then
echo " No process is running."
elif [ "$PIDofP" -lt 1000 ]; then
echo " The PID number is lower than 1000. ($PID: $PIDofP)"
else
# $PIDofP is >= 1000.
echo " The PID number is 1000 or higher. ($PID: $PIDofP)"
fi
exit 0