Se o script payload.sh
não estiver saindo com um exit 0
ou exit 1
explícito, o status de saída será o último comando no script.
Se este último comando, por exemplo, rm something 2>/dev/null
, o status de saída será diferente de zero se something
não puder ser encontrado ou removido.
No script que você mostrou, você está testando corretamente a variável $?
. Você também pode simplificar o teste para o equivalente
if sh payload.sh; then
echo "Success"
else
echo "Failure"
fi