[shell-script] Sleep

2008-09-23 Por tôpico Cleyton Wanderley

Boa Noite,

A minha dúvida é o seguinte: Tem como eu configurar um sleep nesse
scritp? Tipo.. ele dá a mensagem Configurando IP e Mask... e após 3
segundos ele configura o IP e a Máscara, depois de 3 segundos ele dá a
mensagem Configurando Rota Default..., e com mais 3 segundos ele
configura. Ou seja a cada linha do script ele executar de 3 em 3
segundos?? Sei que tem geito usando um for mas nao consegui fazer,
poderiam me ajudar? Grato


#!/bin/bash

echo 'Configurando IP e Mask...'
ipconfig eth0 10.241.74.12 netmask 255.255.0.0
echo 'Configurando Rota Default...'
route add default gw 10.241.74.1




Re: [shell-script] Sleep

2008-09-23 Por tôpico MrBiTS
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

> A minha dúvida é o seguinte: Tem como eu configurar um sleep nesse
> scritp? Tipo.. ele dá a mensagem Configurando IP e Mask... e após 3
> segundos ele configura o IP e a Máscara, depois de 3 segundos ele dá a
> mensagem Configurando Rota Default..., e com mais 3 segundos ele
> configura. Ou seja a cada linha do script ele executar de 3 em 3
> segundos?? Sei que tem geito usando um for mas nao consegui fazer,
> poderiam me ajudar? Grato
> 
> 
> #!/bin/bash
> 
> echo 'Configurando IP e Mask...'
> ipconfig eth0 10.241.74.12 netmask 255.255.0.0
> echo 'Configurando Rota Default...'
> route add default gw 10.241.74.1

Então... GEITO não tem... Agora, JEITO, tem sim. Basta utilizar o comando sleep 
seguido da quantidade de segundos que você quer. Em
outras palavras coloque um "sleep 3" ( sem as aspas, obviamente ) entre cada 
linha.

- --

Um abraço

.0. MrBiTs - [EMAIL PROTECTED]
..0 GnuPG  - 
http://keys.cardboard.net:11371/pks/lookup?op=get&search=0xAC37715A6DD1F186
000 http://www.mrbits.com.br


-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFI2MlOrDdxWm3R8YYRAl1QAKCEE0XprNmAhkLo10JlPC9JpHipUgCdF2BD
3SP4buMkzIE6deIYmjSQms8=
=4Sp+
-END PGP SIGNATURE-


Re: [shell-script] Sleep

2008-09-23 Por tôpico Édnei Rodrigues
Um for ou while também pode ser usado como um sleep, correto?

2008/9/23 MrBiTS <[EMAIL PROTECTED]>:
> -BEGIN PGP SIGNED MESSAGE-
> Hash: SHA1
>
>> A minha dúvida é o seguinte: Tem como eu configurar um sleep nesse
>> scritp? Tipo.. ele dá a mensagem Configurando IP e Mask... e após 3
>> segundos ele configura o IP e a Máscara, depois de 3 segundos ele dá a
>> mensagem Configurando Rota Default..., e com mais 3 segundos ele
>> configura. Ou seja a cada linha do script ele executar de 3 em 3
>> segundos?? Sei que tem geito usando um for mas nao consegui fazer,
>> poderiam me ajudar? Grato
>>
>>
>> #!/bin/bash
>>
>> echo 'Configurando IP e Mask...'
>> ipconfig eth0 10.241.74.12 netmask 255.255.0.0
>> echo 'Configurando Rota Default...'
>> route add default gw 10.241.74.1
>
> Então... GEITO não tem... Agora, JEITO, tem sim. Basta utilizar o comando
> sleep seguido da quantidade de segundos que você quer. Em
> outras palavras coloque um "sleep 3" ( sem as aspas, obviamente ) entre cada
> linha.
>
> - --
>
> Um abraço
>
> .0. MrBiTs - [EMAIL PROTECTED]
> ..0 GnuPG -
> http://keys.cardboard.net:11371/pks/lookup?op=get&search=0xAC37715A6DD1F186
> 000 http://www.mrbits.com.br
>
> -BEGIN PGP SIGNATURE-
> Version: GnuPG v1.4.6 (GNU/Linux)
>
> iD8DBQFI2MlOrDdxWm3R8YYRAl1QAKCEE0XprNmAhkLo10JlPC9JpHipUgCdF2BD
> 3SP4buMkzIE6deIYmjSQms8=
> =4Sp+
> -END PGP SIGNATURE-
> 


Re: [shell-script] Sleep

2008-09-23 Por tôpico MrBiTS
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

> Um for ou while também pode ser usado como um sleep, correto?

Eric Raymond já dizia, nas suas histórias do Mestre Foo, que "há mais natureza 
unix em uma linha de shell script do que em 10.000
linhas de código C".

Na teoria, um for ou while podem ser utilizados como sleep. Para conseguir 3 
segundos basta você variar seu for de 1 a (3 * o ciclo
do processador). Você terá que fazer um for para cada bloco do programa. Num 
programa com 2 blocos, vale o exercício. Num programa
com 2*10^175 blocos, o código ficará porco, ilegível, nojento, amador, feio e 
bobo e "eu não gosto de você e vou pegar a bola e
levar pra casa".

Se eu tenho o sleep, que vale-se do relógio interno do equipamento para 
produzir esse mesmo ciclo, e que dicionará somente 7 bytes a
mais a cada bloco meu, eu considero contraproducente esse tipo de coisa.

- --

Um abraço

.0. MrBiTs - [EMAIL PROTECTED]
..0 GnuPG  - 
http://keys.cardboard.net:11371/pks/lookup?op=get&search=0xAC37715A6DD1F186
000 http://www.mrbits.com.br


-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFI2M9ErDdxWm3R8YYRAo/LAJ4ns8vrP1FhRTCEaxr+rLvG5ZfOIQCdGtKl
9WfL5/lr8cg1WUkLOT8Byv8=
=FOP9
-END PGP SIGNATURE-


Re: [shell-script] Sleep

2008-09-23 Por tôpico Édnei Rodrigues
hehe, eu sei...só te provoquei para conseguir essa explicação mais
técnica, já que vi num blog uma pessoa falando do for e while como um
sleep ou delay

2008/9/23 MrBiTS <[EMAIL PROTECTED]>:
> -BEGIN PGP SIGNED MESSAGE-
> Hash: SHA1
>
>> Um for ou while também pode ser usado como um sleep, correto?
>
> Eric Raymond já dizia, nas suas histórias do Mestre Foo, que "há mais
> natureza unix em uma linha de shell script do que em 10.000
> linhas de código C".
>
> Na teoria, um for ou while podem ser utilizados como sleep. Para conseguir 3
> segundos basta você variar seu for de 1 a (3 * o ciclo
> do processador). Você terá que fazer um for para cada bloco do programa. Num
> programa com 2 blocos, vale o exercício. Num programa
> com 2*10^175 blocos, o código ficará porco, ilegível, nojento, amador, feio
> e bobo e "eu não gosto de você e vou pegar a bola e
> levar pra casa".
>
> Se eu tenho o sleep, que vale-se do relógio interno do equipamento para
> produzir esse mesmo ciclo, e que dicionará somente 7 bytes a
> mais a cada bloco meu, eu considero contraproducente esse tipo de coisa.
>
> - --
>
> Um abraço
>
> .0. MrBiTs - [EMAIL PROTECTED]
> ..0 GnuPG -
> http://keys.cardboard.net:11371/pks/lookup?op=get&search=0xAC37715A6DD1F186
> 000 http://www.mrbits.com.br
>
> -BEGIN PGP SIGNATURE-
> Version: GnuPG v1.4.6 (GNU/Linux)
>
> iD8DBQFI2M9ErDdxWm3R8YYRAo/LAJ4ns8vrP1FhRTCEaxr+rLvG5ZfOIQCdGtKl
> 9WfL5/lr8cg1WUkLOT8Byv8=
> =FOP9
> -END PGP SIGNATURE-
> 


Re: [shell-script] Sleep

2008-09-23 Por tôpico Leandro Santiago
Caso o número de comandos a ser executado possa crescer, e você não 
queira modificar muito o programa, pode fazer assim.
Por exemplo, tenho três comandos:

#!/bin/sh

# lista de comandos que quero executar
comando[0]='ls /tmp'
comando[1]='rm /' # este irá falhar...
comando[2]='echo $PWD'
comando[3]='echo cacatua | rev'

# qtd guarda o número de comandos que eu tenho
[EMAIL PROTECTED]
 
# um contador chamado... i
i=0
 
while (( i < qtd )); do
# executa o comando em questão
eval ${comando[$i]}
 
# é sempre bom guardar o código de retorno do comando
# ele pode ser útil para uma checagem posterior (no mesmo bloco)
retorno=$?

# como por exemplo aqui, pois se um comando falhar eu termino o while
if ((retorno)) ; then
   echo "O comando '${comando[$i]}' falhou com código $retorno"
   break
fi

# incrementa o i para ir ao próximo comando
((i++))
 
# dorme três segundos
sleep 3s
done

Assim, você pode aumentar, sem problemas, a quantidade de comandos a 
serem executados, sem modificar o bloco do while.
Ah, e como viram, eu usei um while... :-)


Re: [shell-script] Sleep

2008-09-23 Por tôpico Leandro Santiago
Opa, na hora de passar o script para o e-mail ele foi todo desformatado 
:-( Mas acredito estar legível :-)

Leandro Santiago escreveu:
> Caso o número de comandos a ser executado possa crescer, e você não 
> queira modificar muito o programa, pode fazer assim.
> Por exemplo, tenho três comandos:
>
> #!/bin/sh
>
> # lista de comandos que quero executar
> comando[0]='ls /tmp'
> comando[1]='rm /' # este irá falhar...
> comando[2]='echo $PWD'
> comando[3]='echo cacatua | rev'
>
> # qtd guarda o número de comandos que eu tenho
> [EMAIL PROTECTED]
>
> # um contador chamado... i
> i=0
>
> while (( i < qtd )); do
># executa o comando em questão
>eval ${comando[$i]}
># é sempre bom guardar o código de retorno do comando
># ele pode ser útil para uma checagem posterior (no mesmo bloco)
>retorno=$?
>
># como por exemplo aqui, pois se um comando falhar eu termino o while
>if ((retorno)) ; then
>   echo "O comando '${comando[$i]}' falhou com código $retorno"
>   break
>fi
>
># incrementa o i para ir ao próximo comando
>((i++))
># dorme três segundos
>sleep 3s
> done
>
> Assim, você pode aumentar, sem problemas, a quantidade de comandos a 
> serem executados, sem modificar o bloco do while.
> Ah, e como viram, eu usei um while... :-)
>



[shell-script] teste numerico

2008-09-23 Por tôpico Elvio Barbalho
Senhores boa tarde como posso validar se uma variável possui
somente números??


[As partes desta mensagem que não continham texto foram removidas]



Re: [shell-script] teste numerico

2008-09-23 Por tôpico Pablo Cardoso
Hehehe resposta de principiante: você pode dar um echo na variável e
utilizar um pipe "tr -d [A-z]" para remover os caracteres que não
sejam numéricos... Para validar, é só usar um if antes desse comando.

Claro que devem haver soluções mais elegantes :P

HTH

2008/9/23 Elvio Barbalho <[EMAIL PROTECTED]>:
> Senhores boa tarde como posso validar se uma variável possui
> somente números??
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 


Re: [shell-script] teste numerico

2008-09-23 Por tôpico jimmy
talvez no seu caso seja possível utilizar um modo de testar variáveis 
que aprendi aqui na lista:

$ var=0123456789
$ if [[ $var =~ "^[0-9]+$" ]]; then echo "numérico"; else echo "não numérico"; 
fi
numérico
$ var=string1
$ if [[ $var =~ "^[0-9]+$" ]]; then echo "numérico"; else echo "não numérico"; 
fi
não numérico



On Tue, Sep 23, 2008 at 03:10:32PM -0300, Pablo Cardoso wrote:
> Hehehe resposta de principiante: você pode dar um echo na variável e
> utilizar um pipe "tr -d [A-z]" para remover os caracteres que não
> sejam numéricos... Para validar, é só usar um if antes desse comando.
> 
> Claro que devem haver soluções mais elegantes :P
> 
> HTH
> 
> 2008/9/23 Elvio Barbalho <[EMAIL PROTECTED]>:
> > Senhores boa tarde como posso validar se uma variável possui
> > somente números??
> >
> 
> 


Re: [shell-script] teste numerico

2008-09-23 Por tôpico Humberto Cruz
pode ser tambem:

$ var=123456 #variavel
$ tr -d ".," <<< $var #remove ponto ou virgula ( para testar numeros decimais )
$ if [ $var -eq $var ]; then echo "num"; else echo "nao-num"; fi
#testa numericamente

[]s
Humberto


Re: [shell-script] teste numerico

2008-09-23 Por tôpico Pablo Cardoso
jimmy, esse método não só testa se o início da variável possui números
(pois usa o ^[0-9]+)?

uma variável com valor "nome123" é filtrada nesse caso como numérico
ou não numérico?

[]'s


2008/9/23 jimmy <[EMAIL PROTECTED]>:
> talvez no seu caso seja possível utilizar um modo de testar variáveis
> que aprendi aqui na lista:
>
> $ var=0123456789
> $ if [[ $var =~ "^[0-9]+$" ]]; then echo "numérico"; else echo "não
> numérico"; fi
> numérico
> $ var=string1
> $ if [[ $var =~ "^[0-9]+$" ]]; then echo "numérico"; else echo "não
> numérico"; fi
> não numérico
>
> On Tue, Sep 23, 2008 at 03:10:32PM -0300, Pablo Cardoso wrote:
>> Hehehe resposta de principiante: você pode dar um echo na variável e
>> utilizar um pipe "tr -d [A-z]" para remover os caracteres que não
>> sejam numéricos... Para validar, é só usar um if antes desse comando.
>>
>> Claro que devem haver soluções mais elegantes :P
>>
>> HTH
>>
>> 2008/9/23 Elvio Barbalho <[EMAIL PROTECTED]>:
>> > Senhores boa tarde como posso validar se uma variável possui
>> > somente números??
>> >
>>
>> 
> 


Re: [shell-script] teste numerico

2008-09-23 Por tôpico MrBiTS
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Humberto Cruz wrote:
> pode ser tambem:
> 
> $ var=123456 #variavel
> $ tr -d ".," <<< $var #remove ponto ou virgula ( para testar numeros decimais 
> )
> $ if [ $var -eq $var ]; then echo "num"; else echo "nao-num"; fi
> #testa numericamente

Não pode não

$ var=13.456
$ echo $var
13.456
$ tr -d '.' <<< $var
13456
$ echo $var
13.456
$ if [ $var -eq $var ]; then echo "num"; else echo "nao-num"; fi
bash: [: 13.456: integer expression expected
nao-num

De mais a mais, $var sempre será igual $var

- --

Um abraço

.0. MrBiTs - [EMAIL PROTECTED]
..0 GnuPG  - 
http://keys.cardboard.net:11371/pks/lookup?op=get&search=0xAC37715A6DD1F186
000 http://www.mrbits.com.br


-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkjZQOkACgkQrDdxWm3R8YY8oACZAcdCtVUuGHcTWezcC5dcFMZ0
k2oAn0jNYVJazfBD3TFbgh3Yi4eUKNFM
=vqv4
-END PGP SIGNATURE-


Re: [shell-script] teste numerico

2008-09-23 Por tôpico jimmy
a expressão regular utilizada é "^[0-9]+$" e não "^[0-9]+" como você 
mencionou.

antes eu fazia esses testes com [ "$(echo $var | grep "^[0-9]+$")" ].

On Tue, Sep 23, 2008 at 03:47:20PM -0300, Pablo Cardoso wrote:
> jimmy, esse método não só testa se o início da variável possui números
> (pois usa o ^[0-9]+)?
> 
> uma variável com valor "nome123" é filtrada nesse caso como numérico
> ou não numérico?
> 
> []'s
> 
> 
> 2008/9/23 jimmy <[EMAIL PROTECTED]>:
> > talvez no seu caso seja possível utilizar um modo de testar variáveis
> > que aprendi aqui na lista:
> >
> > $ var=0123456789
> > $ if [[ $var =~ "^[0-9]+$" ]]; then echo "numérico"; else echo "não
> > numérico"; fi
> > numérico
> > $ var=string1
> > $ if [[ $var =~ "^[0-9]+$" ]]; then echo "numérico"; else echo "não
> > numérico"; fi
> > não numérico
> >
> > On Tue, Sep 23, 2008 at 03:10:32PM -0300, Pablo Cardoso wrote:
> >> Hehehe resposta de principiante: você pode dar um echo na variável e
> >> utilizar um pipe "tr -d [A-z]" para remover os caracteres que não
> >> sejam numéricos... Para validar, é só usar um if antes desse comando.
> >>
> >> Claro que devem haver soluções mais elegantes :P
> >>
> >> HTH
> >>
> >> 2008/9/23 Elvio Barbalho <[EMAIL PROTECTED]>:
> >> > Senhores boa tarde como posso validar se uma variável possui
> >> > somente números??
> >> >
> >>
> >> 


Re: [shell-script] teste numerico

2008-09-23 Por tôpico Eder Ruiz Maria
$ var=1
$ if expr $var + 1 > /dev/null 2>&1; then echo NUMERICO; else echo STRING; fi
NUMERICO
$
$ var="uhet"
$ if expr $var + 1 > /dev/null 2>&1; then echo NUMERICO; else echo STRING; fi
STRING

2008/9/23 jimmy <[EMAIL PROTECTED]>:
> a expressão regular utilizada é "^[0-9]+$" e não "^[0-9]+" como você
> mencionou.
>
> antes eu fazia esses testes com [ "$(echo $var | grep "^[0-9]+$")" ].
>
> On Tue, Sep 23, 2008 at 03:47:20PM -0300, Pablo Cardoso wrote:
>> jimmy, esse método não só testa se o início da variável possui números
>> (pois usa o ^[0-9]+)?
>>
>> uma variável com valor "nome123" é filtrada nesse caso como numérico
>> ou não numérico?
>>
>> []'s
>>
>>
>> 2008/9/23 jimmy <[EMAIL PROTECTED]>:
>> > talvez no seu caso seja possível utilizar um modo de testar variáveis
>> > que aprendi aqui na lista:
>> >
>> > $ var=0123456789
>> > $ if [[ $var =~ "^[0-9]+$" ]]; then echo "numérico"; else echo "não
>> > numérico"; fi
>> > numérico
>> > $ var=string1
>> > $ if [[ $var =~ "^[0-9]+$" ]]; then echo "numérico"; else echo "não
>> > numérico"; fi
>> > não numérico
>> >
>> > On Tue, Sep 23, 2008 at 03:10:32PM -0300, Pablo Cardoso wrote:
>> >> Hehehe resposta de principiante: você pode dar um echo na variável e
>> >> utilizar um pipe "tr -d [A-z]" para remover os caracteres que não
>> >> sejam numéricos... Para validar, é só usar um if antes desse comando.
>> >>
>> >> Claro que devem haver soluções mais elegantes :P
>> >>
>> >> HTH
>> >>
>> >> 2008/9/23 Elvio Barbalho <[EMAIL PROTECTED]>:
>> >> > Senhores boa tarde como posso validar se uma variável possui
>> >> > somente números??
>> >> >
>> >>
>> >> 
> 



-- 
//
eder ruiz maria
holoturoide arroba gmail ponto com
holoturoide arroba gnoia ponto org
www.gnoia.org
//


[shell-script] Problema com read

2008-09-23 Por tôpico Klaus Jurgen Friedrich
Estou aprendendo shell script e encontrei um problema de um exemplo do livro
Programação Shell Linux.

Fiz algumas simplificaçoes nos exemplos.
Vejam:

$ grep klaus /etc/passwd
klaus:x:1000:1000:klaus:/home/kurumin:/bin/bash

$ IFS=: # tranformei a variavel $IFS em dois pontos.


Ate aqui tudo bem, vejam agora:
# Joguei a saida do comando grep para o read armazenar nas variaveis:
#  $a $b $c $d $e $f  $g

$ grep klaus /etc/passwd | read a b c d e f g

# Nao criou a variavel $a
$ echo $a

# Nao nenhuma variavel, vejam. 
$ echo -e "$a\n$b\n$c\n$d\n$e\n$f\n$g"

Fiz outro teste de um exemplo do livro, "O exemplo foi modificado por motivo de 
simplificação.

cat arquivo
12345 1254 1235
12575 4788 1547
15488 9857 5289

while read Linha
do




  Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua 
cara @ymail.com ou @rocketmail.com.
http://br.new.mail.yahoo.com/addresses

[As partes desta mensagem que não continham texto foram removidas]



[shell-script] Direcionar saida de comandos para o read

2008-09-23 Por tôpico Klaus Jurgen Friedrich
Estou aprendendo shell script e encontrei com um problema de um exemplo do
 livro Programação Shell Linux.

Fiz algumas simplificaçoes nos exemplos.
Vejam:

$ grep klaus /etc/passwd
klaus:x:1000:1000:klaus:/home/kurumin:/bin/bash

$ IFS=: # tranformei a variavel $IFS em dois pontos.


Ate aqui tudo bem, vejam agora:
# Joguei a saida do comando grep para o read armazenar nas variaveis:
#  $a $b $c $d $e $f  $g

$ grep klaus /etc/passwd | read a b c d e f g

# Nao criou a variavel $a
$ echo $a

# Nao criou nenhuma variavel, vejam. 
$ echo -e "$a\n$b\n$c\n$d\n$e\n$f\n$g"

Fiz outro teste de um exemplo do livro, "O exemplo foi modificado por motivo de 
simplificação.

cat arquivo
12345 1254 1235
12575 4788 1547
15488 9857 5289

# direcionar o arquivo do final do script para o comando while.

$ cat teste   # Conteudo do arquivo "teste"
while read Linha
do
    prim=$(echo "$Linha" | cut -f1 -d" ")
    seg=$(echo "$Linha" | cut -f2 -d" ")
    terc=$(echo "$Linha" | cut -f1 -d" ")
    echo "$prim"
done < arquivo

# Executei o script e fiquei espantado
$ ./teste
12345 1254 1235
12575 4788 1547
15488 9857 5289

O grande problema eh que eu dei a instrucao ao script para mostrar  somente
a primeira variavel "$prim" na tela e somente armazenar a segunda variavel $seg
e a terceira na variavel na variavel $tec
A primeira variavel $prim deveria ter somente o primeiro campo, a segunda 
variavel somente o segundo campo e a terceira o teiceiro campo.
Por que aconteceu isso?







  Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua 
cara @ymail.com ou @rocketmail.com.
http://br.new.mail.yahoo.com/addresses

[As partes desta mensagem que não continham texto foram removidas]