Wenn Sie für den Anfang davon ausgehen können, dass Bash vorinstalliert ist (was meines Wissens auf allen von Ihnen aufgelisteten Systemen der Fall ist), verwenden Sie den folgenden Hashbang, um kompatibel zu sein:
#!/usr/bin/env bash
Dies ruft alles auf, was bashgerade konfiguriert wird, egal ob es sich in /binoder befindet /usr/local/bin.
Auf den meisten Systemen eines breiten Spektrums (einschließlich AIX, Solaris und verschiedenen BSD-Versionen) bashlandeten sie an verschiedenen Standorten, jedoch envimmer in /usr/bin/env. Der Trick liegt jedoch nicht bei mir, sondern beim Autor des Bash Cookbook.
Wie auch immer, mit Bash können Sie einige "moderne" Funktionen verwenden, die Ihnen das Leben erleichtern.
Zum Beispiel die doppelten Klammern:
[[ -f "/etc/debian_version" ]] && echo "This is a Debian flavor"
In traditionellen Shell-Dialekten müsste man auf Folgendes zurückgreifen:
test -f "/etc/debian_version" && echo "This is a Debian flavor"
Das Beste an den doppelten Klammern ist jedoch, dass sie reguläre Ausdrücke für den Abgleich zulassen. Das Bash Hackers Wiki gibt Ihnen viele Tricks in diese Richtung.
Sie können auch ganz bequeme Ausdrücke wie $((2**10))oder andere arithmetische Ausdrücke verwenden, die der $((expression))Syntax entsprechen.
Die Verwendung von Backticks für Subshells ist in Ordnung, wenn auch etwas veraltet. Die Verschachtelungsfunktionen von $(command ...)Aufrufen sind jedoch viel praktischer, da Sie nicht viele Dinge auf verschiedenen Subshell-Ebenen umgehen müssen.
Dies sind nur ein paar Dinge, die Bash Ihnen gegenüber der herkömmlichen POSIX- shSyntax bietet .
Aber wenn Sie mehr Leistung auf der Shell wollen (nicht nur in Skripten), schauen Sie sich auch an zsh.
/binund/usr/bin. Aus diesem Grund ist es#!/usr/bin/env <shname>heutzutage wahrscheinlich besser, es für die Portabilität zu verwenden .