Criar loop com test [RESOLVIDO]

1. Criar loop com test [RESOLVIDO]

Fabio de Sousa
fabiocs

(usa Fedora)

Enviado em 04/07/2012 - 11:52h

BOm dia, Amigos..

Sou iniciante e preciso da ajuda de vcs para escrever um script aqui e estou com uma dúvida, é o seguinte:

Uso o comando test -z "$(ls /media/)" para saber se existe um arquivo dentro do diretório /media/
e uso echo $? para saber se o resultado é 0 ou 1.
Se for 0 /media está vazio
Se for 1 /media está com um arquivo ou pasta..

O que é preciso é que o test -z "$(ls /media/)" seja executado infinitamente até que $? seja 1 e que após $? = 1 seja executado um comando.

Este loop será chamado pelo usuário, qdo o mesmo quer saber se existe contéudo dentro de /media/ ele chama o script pelo prompt.
Agradeço que puder ajudar,

Obrigado


  


2. Re: Criar loop com test [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 04/07/2012 - 11:56h

Use o while:


while condicao
do
comandos
comandos
done



3. Re: Criar loop com test [RESOLVIDO]

Fabio de Sousa
fabiocs

(usa Fedora)

Enviado em 04/07/2012 - 12:36h

Tá, mas onde entra o loop do comando test -z "$(ls /media/)" até que seja encontrado algum contéudo dentro /media?


4. Re: Criar loop com test [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 04/07/2012 - 12:40h

fabiocs escreveu:

BOm dia, Amigos..

Sou iniciante e preciso da ajuda de vcs para escrever um script aqui e estou com uma dúvida, é o seguinte:

Uso o comando test -z "$(ls /media/)" para saber se existe um arquivo dentro do diretório /media/
e uso echo $? para saber se o resultado é 0 ou 1.
Se for 0 /media está vazio
Se for 1 /media está com um arquivo ou pasta..

O que é preciso é que o test -z "$(ls /media/)" seja executado infinitamente até que $? seja 1 e que após $? = 1 seja executado um comando.

Este loop será chamado pelo usuário, qdo o mesmo quer saber se existe contéudo dentro de /media/ ele chama o script pelo prompt.
Agradeço que puder ajudar,

Obrigado



while true
do
test -z "$(ls /media/)" &&
break
done
echo 'Tem algo em /media/'



5. Re: Criar loop com test [RESOLVIDO]

Fabio de Sousa
fabiocs

(usa Fedora)

Enviado em 04/07/2012 - 13:01h

Obrigado ./.ronin

Mas eu preciso que o test -z $(ls /media) continue em loop até que o diretório /media esteja com algum conteúdo. No caso a condição seria $? = 1.
E que depois que a variavel tivesse o valor 1 seja executado um comando.

Grato!


6. Re: Criar loop com test [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 04/07/2012 - 13:20h


#!/bin/bash
# system GNU bash, version 3.1.17(2)-release i486 slackware 12.2
# autor Paulo Riceli
# more http://sekysu.blogspot.com.br

function _seusComandos()
{
echo 'Seus comandos sendo executados'
}

while true
do
if [ -e /media/* ]
then
_seusComandos
break
else
sleep 0.1s
fi
done


BOA SORTE!!!


7. Re: Criar loop com test [RESOLVIDO]

Fabio de Sousa
fabiocs

(usa Fedora)

Enviado em 04/07/2012 - 13:32h

Opra, tá chegando perto..
Vou testar e volto para contar!

Obrigado!


8. Re: Criar loop com test [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 04/07/2012 - 13:35h

Desculpe!
Eu não tinha entendido a sua pergunta.
Da próxima(s) vez(es) a(s) formule mais claramente.

BOA SORTE!!!



9. Outra versão

Perfil removido
removido

(usa Nenhuma)

Enviado em 04/07/2012 - 13:42h

Esta vesão não faz uso do recurso de funções.

# Loop "infinito"
while true
do
# Verifica se o os subdiretórios de /media
# possuem algo.
# Caso sim enecerra o loop e continua a execução
# do script.
test -z "$(ls /media/)" ||
break
done

echo 'Seus comandos serão excutados a partir desse ponto'


BOA SORTE!!!


10. Re: Criar loop com test [RESOLVIDO]

Fabio de Sousa
fabiocs

(usa Fedora)

Enviado em 20/07/2012 - 12:40h

Perfeito.. isso mesmo q eu procurava!

Obrigado a todos pela atenção!

t+
Fábiocs






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts