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

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

Re: [shell-script] duvidas a usar o SED


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] duvidas a usar o SED
Date: Wed, 23 Apr 2008 13:13:49 -0300

Miguel.

O sed em si não suporta (o conceito de) variaveis como outras
linguagens script (como awk e o proprio bash).

O que vc esta tentando fazer é criar um comando a partir de uma
variavel de ambiente, e isso deve seguir algumas regras, veja só

Ao inves de
            sed  '/Ubunta_"$version_ubuntu"=/{s///;p}'
Faça
            echo '/Ubunta_"$version_ubuntu"=/{s///;p}'

o resultado é

/Ubunta_"$version_ubuntu"=/{s///;p}

ou seja, não é o que vc quer. Isso se deve ao fato do caracter '
(aspas) ser um caracter muito forte, pois TUDO dentro de aspas perde o
seu poder especial.

agora, usando aspas duplas

echo "/Ubunta_${version_ubuntu}=/{s///;p}"
/Ubunta_666=/{s///;p}

(nesse caso eu fiz version_ubuntu=666 , hehe)

O caracter " é menos forte, pois ele permite que o $ possa invocar uma
variavel de ambiente.

IMHO vc pode trabalhar sem o sed, assim:

$ grep $(lsb_release -rs) /caminho/do/version | cut -d= -f2
3.0
$ grep "Ubunta_version" /caminho/do/version | cut -d= -f2
3.0

ou

echo "versao do ubuntu ... $(grep $(lsb_release -rs)
/caminho/do/version | cut -d= -f2)"

Ok?

Abraços

T



2008/4/22 miguelcm86 <address@hidden>:
>
>
>
>
>
>
> Olá pessoal
>
>  Édnei Rodrigues é só para referir que ainda não testei aquele problema
>  com o zenity, mas logo que tiver testado respondo à mensagem ;)
>
>  Entretanto apareceu outro com mais prioridade e é referente ao comando
>  SED.
>
>  O código é este:
>
>  cd ~/Desktop
>  version_ubunta_new=$(sed -n '/Ubunta_version=/{s///;p}' version)
>  version_ubuntu=$(lsb_release -rs)
>  this_new_version=$(sed -n '/Ubunta_"$version_ubuntu"=/{s///;p}' version)
>  echo "$version_ubunta_new"
>  echo "nova versão.. $this_new_version"
>
>  O ficheiro version:
>
>  Ubunta_version=3.0
>  Ubunta_7.04=1.0
>  Ubunta_7.10=3.0
>  Ubunta_8.04=3.0
>
>  O primeiro SED funciona perfeitamente, ele dá 3.0 como output, mas o
>  segundo já não está a dar.
>  O que quero é que ele leia do ficheiro version e guarde em
>  "this_new_version" o número referente à versão que possuo, dado pelo
>  comando lsb_release -rs.
>
>  O facto de meter uma variável dentro do SED faz com que ele falhe. O
>  output é vazio.
>
>  Obrigado
>
>  Abraços
>
>  



-- 
Tiago B Peczenyj
Linux User #405772

http://peczenyj.blogspot.com/
"what does not kill us makes us stronger"


reply via email to

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