Eu tentei executar isso. Eu não recebi um erro de sintaxe. Na verdade, parece uma boa sintaxe.
Por favor, veja a saída abaixo:
$ ./a.sh
./a.sh: 3: ./a.sh: Host: not found
./a.sh: 4: ./a.sh: Port: not found
Usage: ping [-aAbBdDfhLnOqrRUvV] [-c count] [-i interval] [-I interface]
[-m mark] [-M pmtudisc_option] [-l preload] [-p pattern] [-Q tos]
[-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp_option]
[-w deadline] [-W timeout] [hop1 ...] destination
./a.sh: 15: [: nc: unexpected operator
Ping to host was Not Successful, Port is Opened.
Acho que você deseja substituir as aspas nesta linha por backticks:
result_nc='nc -z $Host $Port; echo $?'
altere-o para:
result_nc='nc -z $Host $Port; echo $?'
Existe também um problema de lógica (não um problema de sintaxe) com essa linha, porque isso atribui o resultado stdout do comando em result_nc. Como Gordon sugeriu, mude isso para:
if nc -z $Host $Port
then
...
E remova os espaços da tarefa:
Host = ###############
Port = ####
para que se torne:
Host=###############
Port=####
porque as atribuições não funcionarão corretamente se houver espaços.
E confira o link