Hola,

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

[EMAIL PROTECTED]:~$ foo="foo\`bar"
[EMAIL PROTECTED]:~$ echo $foo
foo`bar
[EMAIL PROTECTED]:~$ 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:

[EMAIL PROTECTED]:~$ foo="foo\`bar  bla    bla"
[EMAIL PROTECTED]:~$ echo "$foo"
foo`bar  bla    bla
[EMAIL PROTECTED]:~$ 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ò:

[EMAIL PROTECTED]:~$ 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.

[EMAIL PROTECTED]:~$ echo "${foo/\`/'}"
> 

2) Amb doble barra. No funciona.

[EMAIL PROTECTED]:~$ echo "${foo/\`/\\'}"
> 

3) Amb triple barra. Tampoc funciona.

[EMAIL PROTECTED]:~$ echo "${foo/\`/\\\'}"
foo\\'bar

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

Ernest

Respondre per correu electrònic a