Quando você executa o script com:
bash /tmp/test0&
você está iniciando um processo bash
totalmente separado e colocando-o em segundo plano. Você não pode ver as variáveis definidas nesse script; eles pertencem ao outro processo. Se você deseja obter acesso a variáveis definidas em outro arquivo, carregue esse arquivo em seu processo bash
atual usando o .
ou source
:
. /tmp/test0
Depois disso, você poderá dizer $pid
em seu script principal e obter o valor que foi definido no outro arquivo.
Tudo isso dito - a maneira como você está estruturando as coisas é muito intrigante. O script que você postou tem muitos outros erros que eu suponho serem de editar o verdadeiro para baixo para a pergunta (você usa $!
como se fosse uma variável awk
, mas então espera que a variável que você copiou para ser definido no script Bash, por exemplo, e test0
teria muitos erros de sintaxe). $!
é definido apenas no Bash depois que um processo em segundo plano é executado com & : mesmo que o comando awk
funcionasse, $pid
estaria vazio. Se você deseja obter o PID do processo xterm
dessa maneira, é necessário executá-lo como xterm ... &
. bash /tmp/test0 &
coloca o script test0
em segundo plano, em vez do comando xterm
.
Parece que seria melhor livrar-se de test0
e apenas lançar xterm
do script principal. Provavelmente vale a pena repensar sobre como você está lidando com as coisas em um nível mais alto . No mínimo, veja o que está no seu arquivo test0
real e veja se é o que você realmente quer.