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 bash
gerade konfiguriert wird, egal ob es sich in /bin
oder befindet /usr/local/bin
.
Auf den meisten Systemen eines breiten Spektrums (einschließlich AIX, Solaris und verschiedenen BSD-Versionen) bash
landeten sie an verschiedenen Standorten, jedoch env
immer 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- sh
Syntax bietet .
Aber wenn Sie mehr Leistung auf der Shell wollen (nicht nur in Skripten), schauen Sie sich auch an zsh
.
/bin
und/usr/bin
. Aus diesem Grund ist es#!/usr/bin/env <shname>
heutzutage wahrscheinlich besser, es für die Portabilität zu verwenden .