Não é possível substituir o valor PID
interno. Use variáveis de ambiente minúsculas.
Eu estou tentando capturar o PID de um processo iniciado em um sub-shell para que eu possa verificar se o processo foi iniciado corretamente, o processo em questão é um aplicativo puma.
sudo su - $APPUSER <<-BASH
PID="\$(bundle exec puma -C config/puma.rb)"
"\$(bundle exec puma -C config/puma.rb & export PID=$1)"
"\$(bundle exec puma -C config/puma.rb &)"
PID="\$(ps aux | grep \"[p]uma.*[u]nix.*$APPNAME\" | awk '{ print \}')"
BASH
e não retorna nada, estranhamente, se eu fizer algum daqueles sem um rodeio ""
eu recebo este erro:
-bash: line 22: [26740]: command not found
o número no []
é o pid, eu sei disso porque eu recebo isso quando eu executo o script novamente (eu verifico se o pid existe):
app is running with pid: 26740
Acho que isso está acontecendo porque estou fazendo os comandos em um heredoc e passando-os para sudo su
Como obtenho o pid do processo em segundo plano que iniciei em um sub-shell.