Comando para sair do script, mas não da sessão SSH
Esta é minha primeira postagem aqui e ainda não sou um especialista em scripts Linux / Bash. :-)
Então, escrevi o seguinte código para meu Raspberry Pi e ele funciona bem, exceto por um pequeno problema.
Estou usando SSH para fazer login no Raspberry Pi. Quando o pino 17 estiver alto, (valor lógico digital de 1 ou 5 volts), quero a mensagem "Notei um 1" impressa na saída do terminal e, em seguida, quero sair do script e ainda permanecer conectado ao Raspberry Pi.
O problema que estou enfrentando é quando o script vê um valor lógico de 1, ele desliga toda a conexão ssh e me leva de volta à sessão do terminal do meu laptop.
Não quero que o script saia da conexão ssh quando o pino 17 ler 1. Eu só quero que ele pare de executar o scriot e me leve de volta ao terminal do raspberry Pi, onde ainda estou conectado ao raspberry Pi para que eu possa fazer outro coisa.
Basicamente, NÃO quero fechar a sessão SSH quando o scipt for encerrado. Você poderia me dar algumas sugestões para corrigir esse problema?
Obrigado pela resposta!
pin=17
gpio mode $pin in while true; do if [[ $(gpio read $pin) -eq 1 ]]; then echo "I noticed a 1 whcih means I noticed 5 volts!" return elif [[ $(gpio read $pin) -eq 0 ]]; then
echo "Did not see a 1, so I will keep looping"
echo ""
sleep 2
fi
done
Respostas
Bem-vindo ao Server Fault. Tente usar o seguinte código:
pin=17
gpio mode $pin in while true; do if [[ $(gpio read $pin) -eq 1 ]]; then echo "I noticed a 1 whcih means I noticed 5 volts!" kill -INT $$
elif [[ $(gpio read $pin) -eq 0 ]]; then
echo "Did not see a 1, so I will keep looping"
echo ""
sleep 2
fi
done
Presumo que você faça algo como
ssh raspberrypi /path/to/script
Então, sim, quando o script sai, a sessão ssh também termina.
No entanto, no script, em vez de sair, gere um shell interativo:
if [[ $(gpio read $pin) -eq 1 ]]; then
echo "I noticed a 1 whcih means I noticed 5 volts!"
exec bash -li
Isso substitui o processo de script em execução por um shell de login interativo.
Você pode precisar de ssh -tou ssh -tt, teste sem primeiro.