[shell-script] Sleep
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
-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
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
-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
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
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
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
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
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
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
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
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
-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
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
$ 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
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
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]