Keine Frage. Aber ein interessantes Verhalten

Hi Leute,

mir ist heute auf der Arbeit etwas ganz komisches passiert, an dem ich euch teilhaben lassen möchte.

Ein shell-script(auf HP-UX) von einem Kollegen lief auf einmal nicht mehr so wie es laufen sollte und zwar mußte man plötzlich alle Optionen und Abfragen in Upper Case schreiben. Meine Nachforschungen ergaben, das in dem Script das Programm tr verwendet wird um alle lowercase letter in uppercase zu Wandel.
Meine Testzeile „echo a | tr [a-z] [A-Z]“ gab nur noch „a“ aus.
Unter Linux hat die Zeile allerdings das erwünschte „A“ zu tage gefördert. Ich mounte also das NFS-Share unter Linux und wechselte in der Verzeichnis. Plötzlich hat es nich mehr funktioniert (nein ein tr im lokalen verzeichnis gab es nicht).
Ich versuchte dann einmal „echo A | tr [A-Z] [a-z]“, es funktionierte überall ausser in dem besagten verzeichnis, dort kam ein „i“ zu tage. Ein ls listete eine i in dem dir auf, allerdings war es 0 byte groß.

Sobald sich eine Datei, mit einem einzigen Buchstaben im Namen, in dem aktuellen verzeichnis befindet, verhält sich tr so.
Ich weiß im Moment nicht ob das ein Bug oder ein feature ist, das werde ich mir morgen anschauen.
(Wenn es allerdings schon jemand weiß, so lasset er es mich bitte wissen)

In diesem Sinne

Markus

Sobald sich eine Datei, mit einem einzigen Buchstaben im
Namen, in dem aktuellen verzeichnis befindet, verhält sich tr
so.

tja, da schlaegt dann mal wieder die gierige shell zu, und matcht die regular expression…

tr [A-Z] [a-z] wird dann zu
tr [A-Z] i …

also:
entweder
tr ‚[A-Z]‘ ‚[a-z]‘ oder
tr [A-Z] [a-z]

Ich weiß im Moment nicht ob das ein Bug oder ein feature ist,
das werde ich mir morgen anschauen.

ein manchmal nerviges feature der shell…

(Wenn es allerdings schon jemand weiß, so lasset er es mich
bitte wissen)

hiermit geschehen…

joachim

Hallo Joachim,

hättst du nicht auf diesen Artikel geantwortet. Hätt ich nicht mehr an ihn gedacht.

Ein Kollege hat es mich schon drauf hingewiesen. Nachdem er es getan hat. War es mir sofort klar. Hab ja schön öfter drüber gelesen.:smile:

Der Kollege hat mir auch gleich die Lösung gesagt.

tr a-z A-Z machts auch.

Es gibt natürlich auch tr [:upper:] [:lower:]. Das war die Lösung die ich gefunden hatte.

Danke

Markus