Thiago Caminha da Silva wrote:
> VAR1=`echo ${VAR2[$X]//\\\\/\\\ }`
>
> Quando uso este "echo" que está rodando no sub-shell na linha de comando,
> ele me retorna corretamente, mas quando rodo ele numa sub-shell como no
> exemplo acima ao invés de ter como resultado "texto\ texto\ texto" eu tenho
> "texto\texto\texto".
Os marcadores `...` impõem um nível adicional de escape, para que você
possa usar "\`" para inserir um "`" no comando.
Prefira usar o operador $(...) sempre que possível. Tem várias vantagens
em relação ao `...`:
1. não precisa de um nível adicional de escape, uma vez que "(" e ")" já
são operadores do shell;
2. é visualmente mais distinto do que o "'", não causando confusões, não
importa a fonte que você use para editar o arquivo;
3. você pode empilhar vários $( ) um dentro do outro de forma mais elegante.
No manual do bash, seção 3.5.4 (Command Substitution) fala sobre isso.
~$ VAR2='texto\texto\texto'
~$ echo $VAR2
texto\texto\texto
~$ echo ${VAR2//\\/\\\ }
texto\ texto\ texto
~$ VAR1=$(echo ${VAR2//\\/\\\ })
~$ echo $VAR1
texto\ texto\ texto
Note como o resultado é consistente. Note que você só precisa fazer o
escape da barra-invertida uma vez dentro do comando.
--
Juliano F. Ravasi ·· http://juliano.info/
5105 46CC B2B7 F0CD 5F47 E740 72CA 54F4 DF37 9E96
"A candle loses nothing by lighting another candle." -- Erin Majors
* NOTE: Don't try to reach me through this address, use "contact@" instead.
---------------------------------------------------------------------------
Esta lista é patrocinada pela Conectiva S.A. Visite http://www.conectiva.com.br
Arquivo: http://bazar2.conectiva.com.br/mailman/listinfo/linux-br
Regras de utilização da lista: http://linux-br.conectiva.com.br
FAQ: http://www.zago.eti.br/menu.html