bash: "/" Zeichen in aus Variable entfernen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
crack
Beiträge: 615
Registriert: 19.08.2003 12:20:26
Lizenz eigener Beiträge: GNU General Public License
Wohnort: München
Kontaktdaten:

bash: "/" Zeichen in aus Variable entfernen

Beitrag von crack » 06.01.2008 15:50:55

Hi,

ich möchte gerne das Zeichen "/" aus einer Variable entfernen komme aber nicht drauf wie ich das anstellen soll.
Bis jetzt habe ich das immer so gelöst um z.B. ein " " durch ein "_" zu ersetzen:

Code: Alles auswählen

b=${§a// /_}
Hat jemand eine Idee?

Vielen Dank im Voraus

Benny

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 06.01.2008 17:24:49

du mußt nur das Escape Zeichen '\" vorranstellen

Code: Alles auswählen

root@gms4:~# a="/a/b/c"
root@gms4:~# b=${a//\//_}
root@gms4:~# echo $b
_a_b_c

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 07.01.2008 08:55:24

Diese Variante von einem substitute habe ich noch nie gesehen.

Wie genau bezeichnet man das?
Oh, yeah!

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 07.01.2008 09:25:18

Duff hat geschrieben:Diese Variante von einem substitute habe ich noch nie gesehen.

Wie genau bezeichnet man das?
Das ist eine Variante der "Parameter Expansion"
man bash hat geschrieben: ${parameter/pattern/string}
The pattern is expanded to produce a pattern just as in pathname
expansion. Parameter is expanded and the longest match of pat-
tern against its value is replaced with string. If Ipattern
begins with /, all matches of pattern are replaced with string.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 07.01.2008 09:41:39

Danke.

Es scheint aber noch einen Unterschied zwischen ${a//\//_} und ${a/\//_} zu geben.
Einmal wird jedes / durch _ ersetzt und im zweiten Fall findet die Ersetzung nur beim ersten Treffer statt.
[/code]
Oh, yeah!

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 07.01.2008 10:29:52

Duff hat geschrieben: Es scheint aber noch einen Unterschied zwischen ${a//\//_} und ${a/\//_} zu geben.
Einmal wird jedes / durch _ ersetzt und im zweiten Fall findet die Ersetzung nur beim ersten Treffer statt.
ja, dieser Unterschied ist auch dokumentiert:
man bash hat geschrieben: ${parameter/pattern/string}
....
If pattern
begins with /, all matches of pattern are replaced with string.

Antworten