Der meiste Code, den ich schreibe, ist in PHP. Ich habe vor kurzem angefangen, Shell-Scripting zu lernen. Die meisten Ressourcen und Tutorials, auf die ich gestoßen bin, sind spezifisch für Bash. Einige warnen vor Bashismen und andere nicht. Ich habe hier viel gelesen und Stapelüberlauf.
Wann immer eine Antwort Bashismen verwendet , wird jemand unweigerlich kommentieren, um zu sagen:
Sie sollten <bashism hier einfügen> nicht verwenden. Es ist nicht tragbar.
Dies geschieht auch dann, wenn die Frage mit einem Tag versehen wurde bash. Für mich ist das so, als würde man einem PHP-Programmierer sagen, dass er keinen Code verwenden soll, der neu in PHP 5 ist, weil er nicht mit PHP 4 verwendet werden kann unter Windows.
Wenn ich in PHP schreibe , wähle ich eine Mindestanforderung und schreibe vorwärtskompatiblen Code. Ich mache mir keine Sorgen, ob ich es abwärtskompatibel mache.
Wenn ich #!/bin/bash
als Schekan benutze, warum sollte ich dann keine Bashismen benutzen? Ich fange an, den Eindruck zu bekommen , dass einige Leute wie zu bash bashisms (Wortspiel beabsichtigt) , nur um von ihm.
Die Benutzer verwenden sie häufig bash
und sind shell
austauschbar - wahrscheinlich aufgrund der Tatsache, dass bash auf vielen Systemen die Standard-Shell ist. Daher kann ich verstehen, dass ein Kommentar hinzugefügt wird, um zu warnen, dass der Code Bashismen verwendet, aber ich verstehe nicht, dass es falsch ist , sie zu verwenden.
Wenn ich ein Skript ausschließlich für den persönlichen Gebrauch schreibe, kann ich es natürlich in jeder gewünschten Sprache schreiben. Aber ich würde gerne glauben, dass ein Teil des Codes, den ich schreibe, für andere nützlich sein könnte.
Ich habe vor dem Posten versucht, eine Antwort auf meine Frage zu finden. Ich fand eine Menge von Informationen über , wie zu testen , für die Portabilität, aber kann nichts finden , wenn es wichtig ist, dies zu tun.
Wann ist es also wichtig, tragbare Skripte zu schreiben?
Beispielsweise,
- Welche Arten von Skripten sollten so portabel wie möglich sein?
- Wie häufig sind Systeme ohne Bash installiert?
- Wenn auf dem System Bash installiert ist, enthält es dann auch die GNU-Version von find und anderen Dienstprogrammen?
bash
Tag versehen ist, kommentiert jemand "Es ist Bashismus und nicht tragbar". Wenn ich eine getaggte Frage beantworte C
, ist es mir egal, ob sie tragbar ist Java
oder nicht.
bash
bestimmte Funktion handelt und nicht portabel ist, genauso wie ich darauf hinweisen möchte, dass für ein Hilfsprogramm eine GNU-spezifische Erweiterung verwendet wird (obwohl die Frage als Linux gekennzeichnet war). Ich habe noch nie jemanden sagen sehen "Das ist ein Bashismus und du solltest ihn niemals benutzen".