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