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

bash, problema amb les cometes



Hola,

Tinc un problema amb BASH. El que intento fer és substituir
les cometes ` (accent obert) per cometes ' (cometa simple) en
una variable.

ernest@doriath:~$ foo="foo\`bar"
ernest@doriath:~$ echo $foo
foo`bar
ernest@doriath:~$ echo ${foo/\`/\'}
foo'bar

Fins aquí tot bé. El problema és quan poso l'expressió entre
cometes dobles (""), cosa que és necessari per preservar els
espais, per exemple:

ernest@doriath:~$ foo="foo\`bar  bla    bla"
ernest@doriath:~$ echo "$foo"
foo`bar  bla    bla
ernest@doriath:~$ echo ${foo/\`/\'}
foo'bar bla bla

Com es pot veure, sense cometes dobles es menja els espais.
El problema és que quan ho poso entre cometes passa això:

ernest@doriath:~$ echo "${foo/\`/\'}"
foo\'bar

Em surt la maleïda barra i no hi ha manera de fer-la
desaparèixer. He provat:

1) Sense barra. No funciona.

ernest@doriath:~$ echo "${foo/\`/'}"
> 

2) Amb doble barra. No funciona.

ernest@doriath:~$ echo "${foo/\`/\\'}"
> 

3) Amb triple barra. Tampoc funciona.

ernest@doriath:~$ echo "${foo/\`/\\\'}"
foo\\'bar

Ja se m'han acabat les idees. Alguna idea de com fer-ho??

Ernest



Reply to: