GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie testet man die Posix-Konformität von Shell-Skripten?

In Anbetracht der Tatsache, dass POSIX einem gemeinsamen Standard aller Unices am nächsten kommt, möchte ich wissen, ob es eine Shell gibt, die dies ausschließlich unterstützt. Während die meisten modernen Shells Unterstützung für POSIX bieten (und POSIX-konforme Skripte problemlos ausführen), sind sie nicht gut darin, auf nicht konforme Funktionen hinzuweisen.

Gibt es eine Shell, die POSIX und nur POSIX so implementiert, dass sie einen Fehler für jede nicht konforme Funktion ausgibt?

BEARBEITEN Ich möchte klarstellen, dass ich nicht nach allgemeinen Tipps zum Schreiben von portablen Shell-Skripten frage. Die in den Kommentaren erwähnte verwandte Frage deckte dies bereits ab. Ich dachte an diese Frage, als ich herausfand, dass bash hat einen --posix Option, aber nur um festzustellen, dass sie nur einige Initialisierungsverhalten betrifft, was nicht genau das ist, wonach ich suche.

Akzeptierte Antwort:

Leider ist „portabel“ normalerweise eine stärkere Anforderung als „POSIX-konform“ für Shell-Skripte. Das heißt, etwas zu schreiben, das auf jeder POSIX-Shell läuft, ist nicht allzu schwierig, aber es auf jeder realen Shell zum Laufen zu bringen, ist schwieriger.

Sie können damit beginnen, jede Shell in Ihrem Paketmanager zu installieren, insbesondere posh von debian klingt wie das, was Sie wollen (Richtlinienkonforme Ordinary SHell). Die Debian-Richtlinie ist POSIX mit einigen Ausnahmen (echo -n angegeben, local …).

Darüber hinaus muss das Testen jedoch einige Shells (insbesondere /bin/sh) auf einer Reihe von Plattformen abdecken. Ich teste auf Solaris (/bin/sh und xpg4/sh) und BSD. AIX und HP-UX sind sehr kompatibel und verursachen keine Probleme. bash ist eine kleine Welt für sich.

Ich würde den Autoconf-Leitfaden für die tragbare Shell empfehlen, der absolut brillant ist und viel Zeit spart. Große Teile davon sind veraltet, aber das ist in Ordnung; Überspringen Sie einfach TruUnix und Ultrix und so weiter, wenn es Ihnen egal ist!


Linux
  1. Gibt es Namenskonventionen für Variablen in Shell-Skripten?

  2. Wie teste ich, welche Shell ich in einem Terminal verwende?

  3. Wie lösche ich Root-Rechte in Shell-Skripten?

  4. Wie erstelle ich eine saubere Shell-Umgebung für den vorübergehenden Gebrauch?

  5. So führen Sie Python-Skripte von der Shell aus

So erstellen Sie Shell-Skripte

Shell-Scripting für Anfänger – So schreiben Sie Bash-Scripts unter Linux

Wie verwende ich if-else in Shell-Skripten?

Die for-Schleife in Shell-Skripten verstehen

Wie liest man Befehlszeilenargumente in Shell-Skripten?

Wie geht Linux mit Shell-Skripten um?