Script para desligar o computador

1. Script para desligar o computador

Hudson Orsine Assumpção
brevleq

(usa Slackware)

Enviado em 05/10/2005 - 08:47h

Criei um shell script mas estão acontecendo alguns erros que eu não sei como corrigir:

echo "Deseja desligar ou reiniciar o computador"
read acao

if test acao="r"
then
echo "Reiniciando"
shutdown -r now
else
if test acao="d"
then
echo "Desligando"
shutdown -h now
fi
fi

não importa se eu digitar o d ou o r porque ele sempre reinicia o computador, outra coisa que acontece é que quando eu digito d ele mostra na tela:

reiniciando
desligando

e reinicia o computador.
A sintaxe está errada?


  


2. Tenta assim

N
o_lalertom

(usa Slackware)

Enviado em 05/10/2005 - 09:24h

#!/bin/bash

echo "Deseja desligar ou reiniciar o computador"
read acao

if [ acao -eq "r" ];
then
echo "Reiniciando"
shutdown -r now
elif [ acao -eq "d" ];
then
echo "Desligando"
shutdown -h now
else
echo "ERROR"
fi


3. Explicação

Hudson Orsine Assumpção
brevleq

(usa Slackware)

Enviado em 05/10/2005 - 10:38h

Certo vou fazer dessa maneira, mas voce pode me explicar o que significa -eq? Esse elif é a junção de else e if?


4. Resp

Fernando Iury Alves Costa
fernandoiury

(usa Red Hat)

Enviado em 05/10/2005 - 11:06h

* O -eq é um operador do comando test que significa igual. ( que também pode ser acionado colocando o que você quer testar entre colchetes )

no seu programa ele está testando se a acao é igual ao que vc digitar.

* O elif é uma segunda condição do if ( para você não ter que fazer 2 ifs )


* Pra ajudar, vai aqui a tabelinha de operandos:

-eq -> igual
-ne -> não igual
-gt -> maior que
-ge -> maior ou igual
-lt -> menor que
-le -> menor ou igual


[]'s


5. while

Hudson Orsine Assumpção
brevleq

(usa Slackware)

Enviado em 05/10/2005 - 11:20h

Certo, entendi esta parte, mas tenho uma dúvida quanto ao while. Antes de criar este script eu tinha tentado validar as outras respostas como: "k", com o comando while:

while (acao<>"d") and (acao<>"r")
do
echo "Opção inválida. Digite apenas d ou r"
read acao
break

eu não sei muito sobre o while, li as man pages sobre este comando mas não entendi muita coisa, portanto não sei se a sintaxe está correta, se há a necessidade de usar o test ou não. Alguém pode me dizer como fazer o while "funcionar"?


6. sobre while

N
o_lalertom

(usa Slackware)

Enviado em 05/10/2005 - 12:02h

While

O while testa continuamente uma expressão, até que ela se torne falsa. Exemplo:

variavel="valor"
while [ $variavel = "valor" ]; do
comando1
comando2
done

O que acontece aqui é o seguinte: enquanto a "$variavel" for igual a "valor", o while ficará executando os comandos 1 e 2, até que a "$variavel" não seja mais igual a "valor". Se no bloco dos comandos a "$variavel" mudasse, o while iria parar de executar os comandos quando chegasse em done, pois agora a expressão $variavel = "valor" não seria mais verdadeira.

ps.: Texto retirado do site - http://www.devin.com.br/eitch/shell_script/

Pra aprender mais sobre shell script da uma olhada no site do aurelio tem muita informação a respeito.

http://www.aurelio.net/shell/


7. While

Perfil removido
removido

(usa Nenhuma)

Enviado em 05/10/2005 - 14:12h

provavelmente isso dará certo :)

while [ "$acao" != "d" -o "$acao" != "r" ]
do
echo "Opção inválida. Digite apenas d ou r"
read acao
done


8. Creio que o ideal seja case.

Felipe Prenholato
chronos

(usa Gentoo)

Enviado em 05/10/2005 - 18:48h

Use o case, ele é bem mais interessante para este tipo de script (com menu). Veja como fica:

-----------------------8<-----------------------
#!/bin/bash

echo "Deseja desligar ou reiniciar o computador"
read acao

case "$acao" in

"r" )

echo "Reiniciando"
#shutdown -r now
exit 0

;;

"d" )

echo "Desligando"
#shutdown -h now
exit 0

;;

* )

echo "ERRO"
exit 0

;;

esac
-----------------------8<-----------------------

Seu script desse modo fica mais organizado e facíl de ler.

Comentei os comandos shutdown para não desligar meu computador :).

Dentro do case as linhas

"r" )
e
"d" )

verificam a condição de $acao, as linhas

;;

indicam o fim daquela condição. A linha

* )

indica a condição padrão e a linha

esac

indica o fim do case.

bom, éh isso ae.

abraços!

chronos


9. Duvidas while

Hudson Orsine Assumpção
brevleq

(usa Slackware)

Enviado em 05/10/2005 - 19:26h

Achei interessante o comando case, mas mesmo assim eu preciso usar o while pra validar as outras opções, acho que do jeito que o lucasd postou pode dar certo, mas eu quero entender como se faz. Não entendi o porque do !="d" -o; pra que que serve a exclamação? E esse -o significa "or"?


10. Detalhes do while

N
o_lalertom

(usa Slackware)

Enviado em 06/10/2005 - 08:30h

Operadores Lógicos:

! NÃO lógico (NOT)
-a E lógico (AND)
-o OU lógico (OR)

Comparação de Strings:

= é igual
!= é diferente
-n é não nula
-z é nula

O que ``while'' vai fazer e ficar dando um loop infinito ate que a expressão passada para ele retorne ``false''.

while [ "$acao" != "d" -o "$acao" != "r" ]

O ``while'' vai ficar rodando em um loop infinito ate que ``$acao'' seja diferente de "d" OU [OR(!=)] ``$acao'' seja diferente de "r".

O loop do ``while'' cobre um bloco formado pelas as palavras ``do'' e ``done'', onde indica respectivamente o começo e o fim do bloco onde o ``while'' atua.

Isso que dizer que enquanto a variável ``$acao'' não for igual a "d" ou "r" o script não vai sair do while.

ps.: Você foi no site que eu te indiquei? http://www.aurelio.net/shell/

Falou, espero que foi possível sanar a sua duvida, qualquer coisa poste de novo. :)


11. Re: Script para desligar o computador

Thiago de Souza Oliveira
thiago.souza

(usa Conectiva)

Enviado em 06/10/2005 - 08:39h

Olá galera, em primeiro lugar quero dar os meus parabéns pela seção comunidades. Valeu Fábio...

Vendo o tópico, eu tbm tenho um script similar, porém, estou com um problema...
como utilizar o comando shutdown como usuário normal.. o meu só funciona como root...

Um Abraço


12. Shutdown como usuario

N
o_lalertom

(usa Slackware)

Enviado em 06/10/2005 - 10:29h

Existe aqui mesmo no VOL um bom numero de dicas, artigos falando sobre o assunto, os links vão logo abaixo:

Contribuição de dica - Executar shutdown com usuário comum em 5 etapas
Publicado por Leonardo Berbert Gomes em 23/03/2005
Login: leoberbert
http://www.vivaolinux.com.br/dicas/verDica.php?codigo=2129

Contribuição de dica - Executar shutdown como usuário comum em 2 etapas
Publicado por Marcelo Gonçalves da Cunha em 25/04/2005
Login: Ilovelinux2004
http://www.vivaolinux.com.br/dicas/verDica.php?codigo=2218

Contribuição de dica - Shutdown liberado para usuários comuns (Slackware)
Publicado por Wainer Chiari em 31/08/2004
Login: pop_lamen
http://www.vivaolinux.com.br/dicas/verDica.php?codigo=1235

Ate mais...



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts