toupper / tolower

Hänsel

Erdapfel
Registriert
27.10.14
Beiträge
2
Hallo. :)

Ich beschäftige mich derzeit primär damit, mein Bash-Scripting zu verbessern. In diesem Zusammenhang ist ein Problem aufgetaucht.

Ein Mac-User schreibt, dass die bash-spezifischen String-Umwandlungen "${1,,}" (liefert den Wert von $1 in Kleinbuchstaben) und "${1^^}" (... in Großbuchstaben) unter MacOS nicht funktioniert hätten. "GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)"

Als Lösung hat jemand vorgeschlagen, tolower und toupper zu benutzen und dies durch folgendes Beispiel-Script illustriert.
  1. #!/bin/bash
  2. if grep "$1" /etc/passwd > /dev/null 2>&1
  3. then
  4. echo "Ja, den Benutzer $1 gibt es."
  5. elif grep "tolower{$1}" /etc/passwd > /dev/null 2>&1
  6. then
  7. echo "Ja, der Benutzer toupper{$1} wurde nur mit Kleinbuchstaben gefunden."
  8. elif grep "toupper{$1}" /etc/passwd > /dev/null 2>&1
  9. then
  10. echo "Ja, der Benutzer toupper{$1} wurde nur mit Großbuchstaben gefunden."
  11. else
  12. echo "Nein, den Benutzer $1 gibt es nicht"
  13. fi
Ich kann bisher trotz einigem Suchen nicht bestätigt finden, dass dies klappen würde. Unter Linux, einem Debian-Derivat, finde ich tolower und toupper nur als Systemaufrufe, nicht als Terminalbefehle. Auch die bash selber scheint damit nichts anfangen zu können. Weiters habe ich auf meinem Rechner kein Paket gefunden, dass diese Befehle liefert, wiewohl ich Funktionen dieses Namens aus bestimmten Programmiersprachen kenne.
  • Wie ist es unter MacOS?
  • Funktioniert die oben zitierte Lösung auf einem Mac normalerweise?
  • Gibt es dort die Form "tolower{$1}"?
 

martinv2

Doppelter Prinzenapfel
Registriert
14.04.12
Beiträge
437
Du kannst tr verwenden, z.B. Groß- auf Kleinschreibung:

tr '[:upper:]' '[:lower:]' <<<$1
 
  • Like
Reaktionen: Dr.Death