Comandos de Condição no Shell [RESOLVIDO]

1. Comandos de Condição no Shell [RESOLVIDO]

Arthur Coscarelli
acoscarelli

(usa Ubuntu)

Enviado em 07/02/2013 - 16:09h

Pessoal boa tarde

Mais uma vez aqui tentando solucionar problema.

Este é um problema no qual crio muito confusão ainda. As condiçoes do shell

Basicamente o programa que preciso criar é: Mover os W X Y Z para suas respectivas pastas

pasta/MES/LETRA_W
pasta/MES/LETRA_X
pasta/MES/LETRA_Y
pasta/MES/LETRA_Z


As condições que preciso criar seriam.

Caso nao exista o diretorio MES - criar

Caso nao exista um diretorio LETRA_ ... - CRIAR

E a ultima condição seria mover os ARQUIVOS certos para as PASTAS certas.


Então é consulta em um DIRETORIO qualquer os arquivos. Vai em outro DIRETORIO e verifica as condições. E por ultimo Mover os arquivos.

Basicamente - Pega o Arquivo, Consulta se existe o Diretorio dele, Sim = COPIA Não = Cria o Diretorio e COPIA


Alguem teria alguma idéia ou solução ?

Agradeço pela ajuda de todos.


  


2. MELHOR RESPOSTA

Perfil removido
removido

(usa Nenhuma)

Enviado em 15/02/2013 - 16:37h

acoscarelli escreveu:

pmartelotta escreveu:

Se resolveu seu problema, não esqueça de marcar o tópico como resolvido e a melhor resposta.

:)


Pedro ..

testei o codigo e o if nao esta pegando o caso do ping ..

Fiz assim - EXEMPLO:

if [ "ping -c1 10.20.2.3" ]
then
echo "CONECTADO"
else
echo "Host indisponível."
fi

Nesse caso o IP eh um inexistente, só coloquei para fazer com que a condição caísse no host indisponivel e só esta caindo em conectado.

Consegue localizar onde estou errando ?


Acoscarelli, mil desculpas cara, o que aconteceu foi o seguinte, o comando test ([) interpretou que o comando ping foi executado, que de fato foi, então, independente se o host estivesse disponível ou não, iria cair no "conectado". Dormi no ponto ao te passar essa resposta. Mas vamos lá, o correto é dessa forma:

ping -c1 10.20.2.3 > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo "CONECTADO"
else
echo "Host indisponível."
fi

Neste caso, usei a variável de retorno '$?'. Ela diz se o resultado do último comando (no nosso caso, o ping) foi satisfatório ou não. Se for zero, o resultado foi satisfatório, se for diferente de zero, não foi.
Testa agora! :p





3. Re: Comandos de Condição no Shell [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 07/02/2013 - 20:28h

Na manpage do seu shell, leia sobre o comando if e sobre os separadores && e ||.


4. Re: Comandos de Condição no Shell [RESOLVIDO]

Arthur Coscarelli
acoscarelli

(usa Ubuntu)

Enviado em 14/02/2013 - 10:45h

paulo1205 escreveu:

Na manpage do seu shell, leia sobre o comando if e sobre os separadores && e ||.


Paulo ... tomando sua iniciativa, consegui entender mais afundo sobre o if.

Agora o que gostaria de saber é um pouco mais complexo.

Gostaria de criar um if sendo caso um determinado ip responda ao ping, execute o ftp que vem logo em seguida.

Teria como uma opção assim ?

Obrigado pela dica .




5. Re: Comandos de Condição no Shell [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 14/02/2013 - 16:22h

acoscarelli escreveu:

paulo1205 escreveu:

Na manpage do seu shell, leia sobre o comando if e sobre os separadores && e ||.


Paulo ... tomando sua iniciativa, consegui entender mais afundo sobre o if.

Agora o que gostaria de saber é um pouco mais complexo.

Gostaria de criar um if sendo caso um determinado ip responda ao ping, execute o ftp que vem logo em seguida.

Teria como uma opção assim ?

Obrigado pela dica .



Opa acoscarelli, beleza?

Cara, no shell vc faz o que quiser, é só estudá-lo. Conhece o livro de shell-script do Aurelio? Dá uma olhada em http://www.shellscript.com.br/.

Então, para checar se um host está disponível na rede o que vc faz? Dá um ping ok?

$ ping -c1 <host>

Este comando é o suficiente pra saber, ok? Quando testamos condições, usamos o comando test, ou colchetes ' [ ] ' (leia a manpage do comando test), como no exemplo:

if [ "ping -c1 <host>" ]
then
<comandos>
else
echo "Host indisponível."
fi

O que está dentro dos colchetes será executado e se for verdadeiro executa os <comandos>, senão dá o aviso de host indisponível.


6. Re: Comandos de Condição no Shell [RESOLVIDO]

Arthur Coscarelli
acoscarelli

(usa Ubuntu)

Enviado em 15/02/2013 - 09:08h

pmartelotta escreveu:

acoscarelli escreveu:

paulo1205 escreveu:

Na manpage do seu shell, leia sobre o comando if e sobre os separadores && e ||.


Paulo ... tomando sua iniciativa, consegui entender mais afundo sobre o if.

Agora o que gostaria de saber é um pouco mais complexo.

Gostaria de criar um if sendo caso um determinado ip responda ao ping, execute o ftp que vem logo em seguida.

Teria como uma opção assim ?

Obrigado pela dica .



Opa acoscarelli, beleza?

Cara, no shell vc faz o que quiser, é só estudá-lo. Conhece o livro de shell-script do Aurelio? Dá uma olhada em http://www.shellscript.com.br/.

Então, para checar se um host está disponível na rede o que vc faz? Dá um ping ok?

$ ping -c1 <host>

Este comando é o suficiente pra saber, ok? Quando testamos condições, usamos o comando test, ou colchetes ' [ ] ' (leia a manpage do comando test), como no exemplo:

if [ "ping -c1 <host>" ]
then
<comandos>
else
echo "Host indisponível."
fi

O que está dentro dos colchetes será executado e se for verdadeiro executa os <comandos>, senão dá o aviso de host indisponível.


Pow .. .valeu pela dica ..

Vou testar o comando e já informo o resultado.

E valeu pela ajuda no outro tópico também ... vou pesquisar mais afundo esse site.

Abraçao



7. Re: Comandos de Condição no Shell [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 15/02/2013 - 10:58h

Se resolveu seu problema, não esqueça de marcar o tópico como resolvido e a melhor resposta.

:)


8. Re: Comandos de Condição no Shell [RESOLVIDO]

Arthur Coscarelli
acoscarelli

(usa Ubuntu)

Enviado em 15/02/2013 - 15:05h

pmartelotta escreveu:

Se resolveu seu problema, não esqueça de marcar o tópico como resolvido e a melhor resposta.

:)


Pedro ..

testei o codigo e o if nao esta pegando o caso do ping ..

Fiz assim - EXEMPLO:

if [ "ping -c1 10.20.2.3" ]
then
echo "CONECTADO"
else
echo "Host indisponível."
fi

Nesse caso o IP eh um inexistente, só coloquei para fazer com que a condição caísse no host indisponivel e só esta caindo em conectado.

Consegue localizar onde estou errando ?


9. Re: Comandos de Condição no Shell [RESOLVIDO]

Arthur Coscarelli
acoscarelli

(usa Ubuntu)

Enviado em 16/02/2013 - 15:15h

Pedro ..

testei o codigo e o if nao esta pegando o caso do ping ..

Fiz assim - EXEMPLO:

if [ "ping -c1 10.20.2.3" ]
then
echo "CONECTADO"
else
echo "Host indisponível."
fi

Nesse caso o IP eh um inexistente, só coloquei para fazer com que a condição caísse no host indisponivel e só esta caindo em conectado.

Consegue localizar onde estou errando ? [/quote]

Acoscarelli, mil desculpas cara, o que aconteceu foi o seguinte, o comando test ([) interpretou que o comando ping foi executado, que de fato foi, então, independente se o host estivesse disponível ou não, iria cair no "conectado". Dormi no ponto ao te passar essa resposta resposta. Mas vamos lá, o correto é dessa forma:

ping -c1 10.20.2.3 > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo "CONECTADO"
else
echo "Host indisponível."
fi

Neste caso, usei a variável de retorno '$?'. Ela diz se o resultado do último comando (no nosso caso, o ping) foi satisfatório ou não. Se for zero, o resultado foi satisfatório, se for diferente de zero, não foi.
Testa agora! :p



[/quote]

Certinhoooo agoraaaa .

Valeu pela força ..








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts