1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Shell Script

Discussão em 'Dúvidas e Suporte Técnico - GNU/Linux & *nix' iniciada por _coelhinha_, 11 de Março de 2008. (Respostas: 15; Visualizações: 1116)

  1. _coelhinha_

    _coelhinha_ Power Member

    Boa noite,

    Recentemente instalei o ubuntu 7.10 no PC...acontece que tenho um trabalho para fazer em shell script e parece que o Ubuntu nao reconhece comandos como o LET...sabem me explicar porque!? é que ando mesmo ás avessas com isso....ja agora sabem m dizer se ao fazer este comando sudo apt-get install build-essential fico com as bibliotecas de C tipo sys/type.h, ou seja, as bibliotecas do unix?

    Obrigado
     
  2. slack_guy

    slack_guy Power Member

    Talvez porque não é 'LET', mas sim 'let' :-)

    $ man bash
    e
    http://www.tldp.org/LDP/abs/html/
     
    Última edição: 11 de Março de 2008
  3. slack_guy

    slack_guy Power Member

    Podes colar o código? sff
     
  4. _coelhinha_

    _coelhinha_ Power Member

    Aqui está o codigo mas nao esta correcto...eu pensei que pudesse resolver o problema em casa mas foi ai que me deparei com o "let: not found"

    #!/bin/sh
    contadorP=""
    contadorN=""
    contadorZ=""
    if [ $# -eq 0 ]
    then echo "Erro: falta um argumento"
    fi
    for i in $*
    do
    if [ $i -lt 0 ]
    let contadorN=$contadorN+1
    then echo "$i e' um numero negativo Total negativos = $contadorN "
    elif [ $i -eq 0 ]
    let contadorZ=$contadorZ+1
    then echo "$i e' o numero zero Total Zeros = $contadorZ"
    let contadorP=$contadorP+1
    else echo "$i e' um numero positivo Total positivos = $contadorP"
    fi
    done
     
  5. slack_guy

    slack_guy Power Member

    Estranho.... não me dá erro. E já experimentaste sem o 'let'?
     
  6. _coelhinha_

    _coelhinha_ Power Member

    provavelmente terá a ver com a versao do ubuntu mas isso é estupido :S sim a minha stora aconselhou me a usar o expr mas ainda nao tentei pq o let é o que sei utilizar (+-) e queria manter me com esse comando lol
     
  7. slack_guy

    slack_guy Power Member

    E assim?
    Código:
    #!/bin/sh
    
    contadorP=''
    contadorN=''
    contadorZ=''
    
    if [ $# -eq 0 ]
    then echo "Erro: falta um argumento"
    fi
    
    for i in $*
    do
        if [ $i -lt 0 ]
            contadorN=$(expr $contadorN + 1)
        then echo "$i e' um numero negativo Total negativos = $contadorN "
        elif [ $i -eq 0 ]
            contadorZ=$(expr $contadorZ + 1)
        then echo "$i e' o numero zero Total Zeros = $contadorZ"
            contadorP=$(expr $contadorP + 1)
        else echo "$i e' um numero positivo Total positivos = $contadorP"
        fi
    done
    
    EDIT:
    reparei que não queres usar 'expr'. Pode ser assim?
    Código:
    #!/bin/sh
    
    contadorP=''
    contadorN=''
    contadorZ=''
    
    if [ $# -eq 0 ]
    then echo "Erro: falta um argumento"
    fi
    
    for i in $*
    do
        if [ $i -lt 0 ]
            contadorN=$(( $contadorN + 1))
        then echo "$i e' um numero negativo Total negativos = $contadorN "
        elif [ $i -eq 0 ]
            contadorZ=$(( $contadorZ + 1))
        then echo "$i e' o numero zero Total Zeros = $contadorZ"
            contadorP=$(( $contadorP + 1))
        else echo "$i e' um numero positivo Total positivos = $contadorP"
        fi
    done
    
     
    Última edição: 11 de Março de 2008
  8. _coelhinha_

    _coelhinha_ Power Member

    tanks assim realmente deixa de se queixar que nao encontra comandos LOL pena o let nao funcionar mas ponto o expr tambem deve de servir lol =)
     
  9. nasic

    nasic Power Member

    Se não me engano isso por causa da versão diferente da consola, mas ha formas de solucionar isso cm ja foi dito!
     
  10. _coelhinha_

    _coelhinha_ Power Member


    Onde é que foi dito!? :S
     
  11. nasic

    nasic Power Member

    Ou usas o expr ou entao usas algo "" no let:
    let "contadorZ=$contadorZ+1"

    Já n uso esta linguagem à uns tempos n me recordo mt bem, mas acho que é assim. Se nao procura pelo google, eu sei que havia uma solução para isso pois tive o mm problema!
     
  12. _coelhinha_

    _coelhinha_ Power Member

    sim a minha prof falou me da opçao do expr...é essa que vou ter que utilizar aqui em casa :S porque mesmo com aspas da erro por isso...mas é estranho dar estes erros :S é porque na faculdade trabalho bem com o let :S
     
  13. slack_guy

    slack_guy Power Member

    Isso depende da shell que estejas a usar. Se queres fazer alguma coisa portável, faz como te sugeri no último exemplo.
     
  14. Condez

    Condez [email protected] Member

    Ve la para onde aponta o "/bin/sh".

    E que no ubuntu, a default shell nao e o "bash" mas sim "dash".
    Ja tive alguns problemas com scripts no ubuntu por este os correr em "dash".

    No entanto, eu tenho Ubuntu 7.10 e com "dash" tenho o let.

    Experimenta definir explicitamente "/bin/bash" no inicio do script ao inves do "/bin/sh".
     
  15. _coelhinha_

    _coelhinha_ Power Member

    thank you very much =D finalmente consegui ter o let :D lool sim o problema era mesmo para onde estava a apontar..eu desconhecia este problema
    Ja alterei para bash em vez de sh e ja funciona =) mais uma vez muito obrigado =)
     

Partilhar esta Página