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

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

Re: [shell-script] Expansão de variáveis com quebra de linha


From: Jeiks
Subject: Re: [shell-script] Expansão de variáveis com quebra de linha
Date: Wed, 23 Jun 2010 16:20:40 -0300

Valeu MrBits, mas eu não quero utilizar um subshell, nem mesmo um for.
O caractere C não é o que vou utilizar para separação, era só um exemplo
para facilitar, eu preciso de colocar os caracteres de '\\n'.

Bom, meu caso é em um arquivo Makefile, onde eu tenho a seguinte
configuração:

DEBDIR  := $(CURDIR)/debian/
METADIR := $(DEBDIR)/metas/
SHORT_D := "Meta pacote para "
FULL_D  := "Este meta pacote instala os aplicativos\\n necessários para "

makebuilddir/vix-meta-packages::
        cat $(DEBDIR)/control.in > $(DEBDIR)/control
        @for META in $(METADIR)/*;do            \
                echo -n "$$META...";            \
                eval "`cat $$META`";            \
                SHORT_DESC=$${SHORT_DESC:-$(SHORT_D)$$NAME} ;\
                FULL_DESC=$${FULL_DESC:-$(FULL_D)$$NAME} ;\
                sed "s;PACKAGENAME;$${PACKAGENAME,,};   ;\
                     s;PROVIDES;$$PROVIDES;             ;\
                     s;CONFLICTS;$$CONFLICTS;           ;\
                     s;DEPENDS;$$DEPENDS;               ;\
                     s;SHORT_DESC;$$SHORT_DESC;         ;\
                     s;FULL_DESC;$$FULL_DESC;"           \
                $(DEBDIR)/control.meta.in >>  $(DEBDIR)/control; \
        done

abaixo o exemplo de um conteúdo de um arquivo do diretório $METADIR:

PACKAGENAME="conjunto-multimidia"
PROVIDES=""
CONFLICTS=""
DEPENDS="smart-notebook-10, smart-core-events"
SHORT_DESC="Aplicativos multimidia para o desktop"
FULL_DESC="Esse meta-pacote fornece um conjunto
 de aplicativos multimídia par o desktop"

sei que eu poderia simplesmente pedir para a pessoa expressar o '\n' na
variável FULL_DESC, mas eu quero deixar mais a nível de usuário e de
visualização mais fácil também.
Pra fazer isso com um subshell eu não tenho problemas não, eu queria mesmo é
ver se tem como fazer com expansão de variáveis, ou alguma outra forma que
não seja necessário o subshell. Inclusive eu também não estou gostando desse
eval meu nao... heheh

abraços

Em 23 de junho de 2010 16:01, MrBiTs <address@hidden> escreveu:

>
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
>
> > Obrigado Fernando, mas podem ser várias linhas.
> > mesmo assim, muito obrigado
>
> Acho que a dica do Fernando é válida e você pode varrer a variável através
> de um laço for nela. Não faltam uns conceitos de
> programação aí não ?
>
> Agora, veja que interessante:
>
> VAR="teste
>
> testando
>
> testado"
>
> echo $VAR
> teste testando testado
>
> echo $VAR | tr " " "C"
>
> Embora eu particularmente ache que esse C é um caracter safado de
> separação, há uma coisa chamada IFS, que é utilizado nesse caso.
> Se você não proteger a varíavel, os IFS encontrados (no caso o caracter de
> nova linha) são convertidos para um espaço (a grosso
> modo, mas não tenho muito tempo para me extender nas explicações agora,
> infelizmente) e você pode usar qualquer ferramenta para
> substituir esse espaço pelo delimitador que você preferir.
>
> - --
>
> Um abraço
>
> .0. MrBiTs - address@hidden <mrbits.dcf%40gmail.com>
> ..0 GnuPG -
> http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x6EC818FC2B3CA5AB
> 000 http://www.mrbits.com.br
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
>
> iQEcBAEBCAAGBQJMIlonAAoJEG7IGPwrPKWrXIIH/iQYdvXPiAOQa9xLIOhzDtCA
> cEEM9FR+cXV5FUHEBPKJn3dDkUm+8IntFImzoMAcvIG3c57mNIRh6i413uKE80JT
> Ixz6tUFfQQ+82u931CnPoLQLRFx6Cm1ywzqHLbD0M31R3bhHLHaNQv+wP+WMm+pM
> GW6not0eP/XsV8bevZjw5uiqLMMRluCORWZNhYZmrGKLdeBWiT0Iv8WMcoRNhhY3
> 2QfC/CGNnGU76g8bhearmc73DxYDk3OQpinufSVdPuGoYN2Oyl6pqOivnVEEFK+M
> 3yd1PzijBOvYXkTKyLKCjZ4hBSxHTwS2xWmLXFOl5n1RTvMj408ZpASOuVCcMV8=
> =lBd6
> -----END PGP SIGNATURE-----
>  
>



-- 
Jacson R. C. Silva


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



reply via email to

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