Note que isto é executado em um ambiente linux debian
Eu tenho o script de exemplo a seguir chamado HelloWorld.sh
#!/bin/bash
echo "Hello World"
exit 1
Eu então executo o seguinte comando
script -c ./HelloWorld.sh foo ; echo $?
$? retorna 0, o que é esperado, pois o próprio comando de script foi executado com sucesso. No entanto, eu quero o código de retorno HelloWorld.sh que seria 1 se eu apenas executasse o seguinte comando.
bash HelloWorld.sh ; echo $?
Olhando para a página de manual, vejo que o comando de script não retorna nada, então o seguinte não ajudaria
return_code='script -c ./HelloWorld.sh foo'
A pergunta que gostaria de fazer é se existe uma maneira de obter o valor de retorno de HelloWorld.sh ao executá-lo no contexto do comando de script, como enviar o valor de saída para o shell pai. Se não, como você recomendaria fazê-lo?
Minhas possíveis respostas sobre como eu faria se não pudesse usar o comando de script
- Faça o HelloWorld.sh gravar na memória compartilhada usando a API shm
- Faça o HelloWorld.sh gravar em um arquivo
Ambos os métodos requerem a limpeza do objeto de memória compartilhada e do arquivo respectivamente, por isso estou pedindo meu próprio conhecimento pessoal se existe uma solução mais simples