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
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
Bash x Bourn/Korn Shell (duvida muiiiiito simples)
no bash as variaveis funcionam com $var e nao ${var}
isso deve resolver nao ?
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
Bash x Bourn/Korn Shell (duvida muiiiiito simples)
Realmente , troquei o while pelo for e funcionou... eitaaa...
Valeu
César