shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RES: [shell-script] Atribuindo valor a uma variável


From: Julio Cezar Neves - DISB.O
Subject: RES: [shell-script] Atribuindo valor a uma variável
Date: Tue, 3 Sep 2002 11:46:08 -0300

Alexander,
na linha

novonome = echo $file | sed s/entremus/matmus/g

existem 2 erros:

1 - Qdo fizer uma atribuição jamais deixe espaço ao lado do sinal de igual.
Assim uma atribuição correta seria:

novonome=echo $file | sed s/entremus/matmus/g

2 - Se vc fizer da forma acima, ele tentará colocar o literal "echo $file |
sed s/entremus/matmus/g" dentro da variável novonome (e assim mesmo com erro
por causa dos caracteres em branco), e não é este o seu desejo. Para colocar
a saída do echo dentro da variável, vc tem que priorizar a execução do
comando, isto é, o cmd tem que ser executado antes da atribuição. 

Então, a forma correto de fazê-lo é:
novonome=`echo $file | sed s/entremus/matmus/g`

Outra forma de priorizar é trocar as aspas(`) por uma construção do tipo
$(...), assim:
novonome=$(echo $file | sed s/entremus/matmus/g)

Prefiro usar da 1a. forma por ser suportada por todos os shells. A 2a. não é
suportada pelo bourne shell(sh)

[ ]s,
Julio Cezar Neves
-Eu Apoio o Software Livre-
-I Support Free Software-
* +55 21 2528-7070  /  9853-4044
*address@hidden

  
>         Para:   <address@hidden>
>         cc: 
>         Assunto:        [shell-script] Atribuindo valor a uma variável
> 
> 
> Olá!
> 
> Não consegui renomear meus arquivos usando um loop for.
> 
> Parece que o meu problema é na hora de tentar atribuir o 
> resultado de um
> comando a uma variável.
> 
> Tenho três arquivos: ativarentremus, desativarentremus e 
> consultarentremus
> 
> O script abaixo me exibe o nome alterado para ativarmatmus, etc:
> 
> for file in *
> do
> echo $file | sed s/entremus/matmus/g
> done
> 
> 
> Aí eu tentei fazer o seguinte:
> 
> for file in *
>     do
>         novonome = echo $file | sed s/entremus/matmus/g
>         mv $file $novonome
>     done
> 
> 
> Imaginei que isso funcionaria sem maiores problemas, mas não funciona.
> 
> Não consigo atribuir à variável novonome o resultado do 
> comando echo...
> 
> Tentei colocar entre aspas, algo como:
> 
> novonome = "echo $file | sed s/entremus/matmus/g"
> 
> Também não deu certo, as resposta que recebo é algo como:
> 
> echo ativarentremus | sed s/entremus/matmus/g
> 
> O script lê o valor da variável mas não executa o sed.
> 
> Tentei separar os comandos: "echo $file" | sed s/entremus/matmus/g
> 
> Também não deu certo.
> 
> Enfim... existe alguma forma direta de eu atribuir à variável 
> novonome o
> resultado do comando echo $file | sed s/entremus/matmus/g
> 
> Estou escrevendo o sed errado?
> 
> Me parece algo simples pegar o resultado do sed para usar 
> como um novo 
> nome
> de arquivo, mas não está dando.
> 
> Que conceito eu estou ignorando?
> 
> Sei que estou sendo meio mala... mas só falta isso para eu conseguir
> facilitar meu trabalho na edição de uns duzentos(!) arquivos.
> 
> Abraços!
> Alexander
> 
> 
> 
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de 
> programação, como 
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem 
> prévio aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em 
http://www.listasdiscussao.cjb.net
---------------------------------------------------------------------
 

Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
http://br.yahoo.com/info/utos.html 






[As partes desta mensagem que não continham texto foram removidas]



---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em
http://www.listasdiscussao.cjb.net
---------------------------------------------------------------------
 

Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
http://br.yahoo.com/info/utos.html 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]