+ Responder ao Tópico



  1. #1
    Futuremax
    Visitante

    Padrão Comando Simples

    É o seguinte, tenho um script shell que pego o tamanho de um arquivo com o cut e gravo num variável, agora, quando comparo esse tamanho com um número ele sempre acha que é maior que o número, o que é falso, acredito que ele esteja achando que a variável é string e não number, tem como eu dizer que é number?? Mais uma coisinha, como elimino espaços vazios de uma strig??

  2. #2

    Padrão Comando Simples

    cola aki exatamente como fica sua linha de comparacao

  3. #3
    Futuremax
    Visitante

    Padrão Comando Simples

    Meu script é exatamente esse:
    Ainda não está pronto, falta muito para que ele faça o que eu quero, mas preciso primeiro comparar a variável com um número

    #!/bin/sh
    export MES=`date +%m`
    case $MES in
    '01')
    digito="J"
    ;;
    '02')
    digito="F"
    ;;
    '03')
    digito="M"
    ;;
    '04')
    digito="A"
    ;;
    '05')
    digito="M"
    ;;
    '06')
    digito="J"
    ;;
    '07')
    digito="J"
    ;;
    '08')
    digito="A"
    ;;
    '09')
    digito="S"
    ;;
    '10')
    digito="O"
    ;;
    '11')
    digito="N"
    ;;
    '12')
    digito="D"
    ;;
    esac
    ARQUIVO=`ls -l /cache/log/access.log|cut -d y -f 3|cut -d $digito -f 1`
    echo $ARQUIVO
    if [ $ARQUIVO > 126462687 ]; then
    echo "isso"
    else
    echo "akilo"
    fi

    Meu problema está no if

  4. #4
    Futuremax
    Visitante

    Padrão Comando Simples

    E ae 1c3, nada??

  5. #5

    Padrão Comando Simples

    c num to enganado pra comprar numeros vc tem q usar
    if [ $X gt 345234 ]

    ao inves de >

  6. #6
    Futuremax
    Visitante

    Padrão Comando Simples

    ARQUIVO=`ls -l /cache/log/access.log|cut -d y -f 3|cut -d $digito -f 1`
    echo $ARQUIVO
    if [ $ARQUIVO gt 126462687 ]; then
    echo "isso"
    else
    echo "akilo"
    fi

    Dá erro:
    [: gt: binary operator expected

  7. #7

    Padrão Comando Simples

    coloca as 2 variaveis de comparacao entre " "

  8. #8
    Futuremax
    Visitante

    Padrão Comando Simples

    Mesmo erro.... já to me irritando.... acho que o cut tá colocando espaços vazios depois ou antes do número....se tiver como retirar esses espaços deve resolver...

  9. #9

    Padrão Comando Simples

    da uma olhada aki:
    http://www.tldp.org/LDP/abs/html/

    to tentando achar lah

  10. #10

    Padrão Comando Simples

    achei, tava faltando um detalhe

    if [ ${s2_val} -gt ${n} ]; then

  11. #11
    Futuremax
    Visitante

    Padrão Comando Simples

    Valewz kra, funcionou!!!!!

  12. #12

    Padrão Comando Simples

    so notando... gt eh para strings, o que claro uma string tbm pode ser obtida como ascii, logo nao eh esse o escopo.

    mas:


    >= --- so para numeros
    gt --- para strings (que engloba numeros tbm)

    agora voce fez altos cut's eu preferia fazer com awk

    exemplo:


    fw:/home/bruno# ls -l /var/log/squid/access.log
    -rw-r----- 1 proxy proxy 6895800 Jul 7 11:38 /var/log/squid/access.log



    fw:/home/bruno# ls -l /var/log/squid/access.log| awk '{print $5}'
    6988582

    jah que voce quer o tamanho nao eh ? entao eh isso. bem mais facil