+ Responder ao Tópico



  1. #1
    Visitante

    Padrão Bash x Bourn/Korn Shell (duvida muiiiiito simples)

    Ola a todos,

    Trabalhei com Unix SCO (Bourn) e AIX (Korn) por 2 anos (como usuario) , mas sempre fiz algumas shells conforme precisava. A alguns dias comecei a trabalhar com linux (bash) e encontrei um problema que considero muito besta, mas não estou conseguindo resolver , seguinte :

    tenho uma shell +ou- assim :
    #######################
    ARQ=/tmp/arq_$$
    ls > ${ARQ}
    vLin=" "
    cat ${ARQ} | \
    while read L ; do
    vLin=${vLin}" "${L}
    ##aqui dentro funciona...
    done
    echo ${vLin}
    ##aqui nao...
    #######################

    Como devem ter percebido eh muiiito simples, quero apenas concactenar os nomes dos arquivos um do lado do outro.. Masssss... acontece que no final a variavel (vLin) esta sempre nula ou sempre com o mesmo valor que inicializei antes do loop (neste caso com um espaço em branco). debugando com "bsh -x" ou colocando um "echo" dentro do loop , ela aparece com os valores ok, sempre concactenando os nomes dos arquivos!!! mas assim que passa o loop... ja era... é algum problema de escopo que não consigo resolver... já tentei o "export" , "setvar" mas nada funcionou, procurei no "man" mas não encontrei nada... po, tem que ter um jeito !!!
    Valeu
    César

  2. #2
    Visitante

    Padrão Bash x Bourn/Korn Shell (duvida muiiiiito simples)

    Cara, troque o seu loop WHILE por um LOOP FOR. Dessa maneira:

    for L in `cat ${ARQ}`
    do
    vLin=${vLin}" "${L}
    done
    echo ${vLin}

    Nao sei porque ao funcionou com o while, mas o for funcionou....
    Falou


  3. #3

    Padrão Bash x Bourn/Korn Shell (duvida muiiiiito simples)

    no bash as variaveis funcionam com $var e nao ${var}

    isso deve resolver nao ?

  4. #4
    Visitante

    Padrão Bash x Bourn/Korn Shell (duvida muiiiiito simples)

    Fiz o seguinte teste:

    var="abcd"
    echo ${var}
    echo $var

    e as duas variaveis foram impressas. Entao nao acho que o problema seja isso.
    Marcelo

  5. #5
    Visitante

    Padrão Bash x Bourn/Korn Shell (duvida muiiiiito simples)

    Realmente , troquei o while pelo for e funcionou... eitaaa...
    Valeu
    César