Shell Script

_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
 
sim eu sei que é let e nao LET...apenas pus em maiusculas para se destacar ;)

este é o output:

nokas@ubuntu:~/Área de Trabalho/Aula TP1$ ./ex4.sh -1 0 5 9
./ex4.sh: 24: let: not found
./ex4.sh: 24: let: not found

ps: tanks pelo link que vai dar jeito
 
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
 
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
 
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:
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 =)
 
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!
 
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
 
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".
 
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
E que no ubuntu, a default shell nao e o "bash" mas sim "dash".

Ja alterei para bash em vez de sh e ja funciona =) mais uma vez muito obrigado =)
 
Back
Topo