Dúvida quanto ao BASH

1. Dúvida quanto ao BASH

Maico
MaicoREC

(usa Outra)

Enviado em 11/07/2012 - 14:46h

Certo
tenho o seguinte código

#!/bin/bash
i=0
while true; do
(($i==0)) && echo "entrou"
((i++))
sleep 800
done

ele faz um loop "infinito" no bash, é isso que eu quero, isso eu ja fiz, sendo que quando o user da control + c, ele abre o bash normalmente, quero que quando o user der control + c, ele deslogue do sistema, ou seja exit, como ficaria meu codigo?


  


2. Re: Dúvida quanto ao BASH

Perfil removido
removido

(usa Nenhuma)

Enviado em 11/07/2012 - 15:16h

Ou se consegue usando o read prá leitura modo raw e faz a comparação, ou tem isso aqui:

trap: trap [-lp] [[arg] signal_spec ...]
Trap signals and other events.

Defines and activates handlers to be run when the shell receives signals
or other conditions.

ARG is a command to be read and executed when the shell receives the
signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC
is supplied) or `-', each specified signal is reset to its original
value. If ARG is the null string each SIGNAL_SPEC is ignored by the
shell and by the commands it invokes.

If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If
a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command.

If no arguments are supplied, trap prints the list of commands associated
with each signal.

Options:
-l print a list of signal names and their corresponding numbers
-p display the trap commands associated with each SIGNAL_SPEC

Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal number.
Signal names are case insensitive and the SIG prefix is optional. A
signal may be sent to the shell with "kill -signal $$".

Exit Status:
Returns success unless a SIGSPEC is invalid or an invalid option is given.



3. Re: Dúvida quanto ao BASH

Perfil removido
removido

(usa Nenhuma)

Enviado em 11/07/2012 - 15:33h

MaicoREC escreveu:

Certo
tenho o seguinte código

#!/bin/bash
i=0
while true; do
(($i==0)) && echo "entrou"
((i++))
sleep 800
done

ele faz um loop "infinito" no bash, é isso que eu quero, isso eu ja fiz, sendo que quando o user da control + c, ele abre o bash normalmente, quero que quando o user der control + c, ele deslogue do sistema, ou seja exit, como ficaria meu codigo?



#!/bin/bash
function _loop()
{
while :
do
sleep 0.8s
done
return 2
}
_loop || exit



4. Re: Dúvida quanto ao BASH

Maico
MaicoREC

(usa Outra)

Enviado em 11/07/2012 - 18:00h

o código que o rapaz passou ai nao funcionou, dei control + c e abri normalmente o bash! :\
editado: ele continua sem funcionar, dou control + c e ele abre o bash!


5. Re: Dúvida quanto ao BASH

Maico
MaicoREC

(usa Outra)

Enviado em 11/07/2012 - 20:34h

alguem? :[


6. Re: Dúvida quanto ao BASH

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 11/07/2012 - 22:36h

O exit encerra a sessão aberta do BASH, dentro de um script ele vai fechar a sessão do BASH aberta para o script.

O comando exit por si, não faz logoff de usuário.

Se o ambiente usado for Gnome, use:

gnome-session-quit --force

Mas não vai funcionar dentro de um script, pois o CTRL+C vai encerrar a execução do script e não apenas do comando que está sendo executado dentro do script ( como o sleep ou a função ).


Qual sua real necessidade?, pois acredito que não é fazer um script ser usado e quando for encerrado abruptamente encerrar a sessão..


7. Re: Dúvida quanto ao BASH

Perfil removido
removido

(usa Nenhuma)

Enviado em 11/07/2012 - 23:41h

Metade da resposta:

Este código funciona numa linha de terminal SEM estar em modo gráfico e eu prefiro não tentar usar aqui (modo gráfico) no momento:

$ {trap "logout" SIGINT; while [[ 1 ]]; do  echo > /dev/null; done; }; 


"trap" cria uma associação entre o sinal do "Ctrl+C" e o comando "logout".

O sinal chamado SIGINT é o que acontece quando se usa ele.

No lugar do "echo > /dev/null" pode ser usado um read, sleep ou outra coisa até. Não testei.

Ainda faltam tratar de outras combinações de teclas insuspeitas como o Ctrl+D e o Ctrl+Z.

Mas eu percebi entre outras coisas que isso "TRAVA" o computador e faz com que o cara que pegar isso aí fique dando Ctrl+C e deslogando eternamente.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts