A variável $?
no script está sendo substituída quando você atribui a variável, não no host remoto
#!/bin/bash
source "$PWD/AWS.config.sh"
ssh -i "$EC2_PEM_FILE" "$APP_HOST" << END_SCRIPT
cd ~/"$APP_PATH"
netstat -ln | grep -q ':80 '
if [ \$? -eq 0 ]; then
echo something on 80
else
echo nothing on 80
fi
END_SCRIPT
- Já existe uma variável bash chamada PWD, então você não precisa atribuir a ela.
- Adquira o hábito de citar suas variáveis, a menos que você saiba quando não fazer isso.
-
grep -q
é silencioso, mas retorna o mesmo status de saída. Mais eficiente também, porque sai imediatamente se uma correspondência for encontrada, não procurando o restante do arquivo. - você precisa
cd
apenas para executarnetstat
?
Você também pode usar os operadores booleanos de curto-circuito:
ssh -i "$EC2_PEM_FILE" "$APP_HOST" "netstat -ln | grep -q ':80 ' && echo something on 80 || echo nothing on 80"
END_SCRIPT