Sorry, aber ich finde heute nicht das Richtige beim Suchen:
Eigentlich will ich nur wissen, wie man in der bash am elegantesten testet ob eine Variable Strings enthält oder nur Ziffern.
testen ob strings enthalten sind
- JaKlaRo
- Beiträge: 121
- Registriert: 06.03.2008 15:00:00
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Re: testen ob strings enthalten sind
Hallo,
um zu testen, ob "var" nur Ziffern enthält:
MfG
JaKlaRo
um zu testen, ob "var" nur Ziffern enthält:
Code: Alles auswählen
var1=${var##*[^0-9]*}
if [ -z "$var1" ]; then
echo 'var ist ein String.'
else
echo 'var enthält nur Ziffern.'
JaKlaRo
Re: testen ob strings enthalten sind
Super, Danke! Kannst Du
noch ein bißchen erläutern, damit ich sowas auch selber bauen kann?
Wieso eliminiert das alle Ziffern? Was ist das Stichwort unter dem ich sowas ergoogeln kann?
Code: Alles auswählen
${var##*[^0-9]*}
Wieso eliminiert das alle Ziffern? Was ist das Stichwort unter dem ich sowas ergoogeln kann?
Re: testen ob strings enthalten sind
Ich hätte es (vermutlich falsch) "substring substitution" genannt. "substring_removal" ? "parameter expansion"?
http://wiki.bash-hackers.org/syntax/pe? ... ng_removal
http://tldp.org/LDP/abs/html/string-manipulation.html
http://wiki.bash-hackers.org/syntax/pe? ... ng_removal
Die links sollten erstmal reichen (wie auch immer es korrekter Weise genannt wird).
## vom Anfang der Variablen besehen die grösstmögliche Trefferquote für:
* ->alles mögliche
[^0-9] ->keine Ziffern
* -> nochmal alles mögliche
entfernen.
So ungefähr. Kenne ich eigentlich nur für Pfadnamen:
dir=/usr/share/doc
echo ${dir##*/} -> ergibt doc
Vom Anfang der Variablen "dir" "alle Zeichen und /" so weit wie möglich entfernen.
http://wiki.bash-hackers.org/syntax/pe? ... ng_removal
http://tldp.org/LDP/abs/html/string-manipulation.html
http://wiki.bash-hackers.org/syntax/pe? ... ng_removal
Die links sollten erstmal reichen (wie auch immer es korrekter Weise genannt wird).
## vom Anfang der Variablen besehen die grösstmögliche Trefferquote für:
* ->alles mögliche
[^0-9] ->keine Ziffern
* -> nochmal alles mögliche
entfernen.
So ungefähr. Kenne ich eigentlich nur für Pfadnamen:
dir=/usr/share/doc
echo ${dir##*/} -> ergibt doc
Vom Anfang der Variablen "dir" "alle Zeichen und /" so weit wie möglich entfernen.