[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"
- duvidas a usar o SED, miguelcm86, 2008/04/23
- Re: [shell-script] duvidas a usar o SED,
Tiago Barcellos Peczenyj <=