[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]