guennid hat geschrieben:meillo hat geschrieben:dieses Rumgejammere, dass du einerseits Shellscripten willst, dich andererseits aber nicht damit befassen willst.
Ich will ja gar nicht shell-scipten. Dafür ist mir Syntax viel zu undurchsichtig. Ich will ein konkretes Problem lösen: Bilder in ein seitenorientiertes PDF-File transferieren. Dazu werde ich schwerlich ein geeignetes Debian-Binary finden. Bleiben für mich zwei Möglichkeiten entweder ich baue mir selbst eins mit Pascal oder ich bemühe die shell. Da das, im vorliegenden Fall wie gezeigt, weiter nichts als ein Einzeiler ist, schien mir das das Praktischere.
Und damit ``willst'' du eben doch Shellscripten! Du willst es eher als jeden anderen Loesungsweg.
Aber die Syntax ist eben nicht praktisch.
Der Knackpunkt ist, dass dir der beste der moeglichen Wege nicht gut genug ist ... Du haettest gerne eine Idealoption, die es aber nicht gibt.
uname hat geschrieben:Die Gründe für die Syntax kenne ich natürlich auch nicht. Ich könnte mir aber vorstellen, dass [ (test) eine schließende Klammer erfordert, um das Ende der Parameter einfacher zu erkennen und somit den Befehl besser zu parsen. Moderne Sprachen mit fast unendlich viel CPU, RAM und Plattenplatz können hier weit großzüger sein. Wobei mir ehrlich kein Zeichen bzw. das Fehlen eines Zeichens als sinnvoll erscheint, um [ korrekt nach Chomsky-Hierarchie (war es nicht kontextfrei und damit CH Typ 2 / Backus-Naur-Form ) zu beenden.
Da bist du auf dem Holzweg, wie Liffi schon erkannt hat. Mit dem Parsen hat das rein gar nichts zu tun. Das ist ausschliesslich syntactic Sugar. (Man darf nicht vergessen, dass `[' nur ein Alias fuer test(1) ist. Ruft man es als ``test'' auf, dann darf das letzte Argument *keine* schliessende eckige Klammer sein; ruft man das Kommando als ``['' auf, dann *muss* das letzte Argument eine schliessende eckige Klammer sein.)
Es ist ganz sicher so, dass die Bourne-Shell-Syntax nicht ideal ist ... aber man muss bei der Kritik auch beruecksichtigen, dass der Verbesserungsversuch aus Berkeley, naemlich die csh-Syntax noch schlimmer war. Ganz so einfach scheint das Problem also nicht zu loesen sein!
Natuerlich sind wir inzwischen ein paar Jahrzehnte weiter, aber dafuer gibt es auch ein paar Jahrzehnte mehr Kompatibilitaet zu wahren. Man kann es auch so sehen: Bislang hat sich keine Shell mit besserer (inkompatibler!) Syntax durchgesetzt ... noch nicht mal rein interaktiv. Warum denn nicht, wo die Bourne-Shell doch anscheinend so schlecht ist? Auch guennid macht's lieber in der haesslichen Shell als in Python o.ae. -- Alle jammern nur rum, dass die Bourne-Shell so schlecht sei, sehen sie aber gleichzeitig trotzdem als das geringste Uebel an, weil sonst wuerden sie sie ja nicht verwenden sondern eine der vielen Alternativen. Das ist es, was *ich* nicht verstehe.
Und fuer alle die am ``Ach, haette man es halt damals besser gemacht!'' haengen bleiben, denen kann nur Plan9 ans Herz gelegt werden, denn das ist effektiv ein ``Unix besser gemacht''. Wenn ihr also eine Bourne-Shell in ``besser gemacht'' sucht, dann solltet ihr mal rc(1) versuchen. -- Also tun und nicht jammern!