sh-Skript läuft auf meinem Computerterminal einwandfrei, erzeugt aber Fehler auf einem Remote-Server

sh-Skript läuft auf meinem Computerterminal einwandfrei, erzeugt aber Fehler auf einem Remote-Server

Ich habe dieses Test-SH-Skript, das ich auf meinem Computer ausführen kann und das, wenn alles funktioniert, keine Ausgabe erzeugen soll. Ich habe scp verwendet, um alles in dem Ordner, in dem ich arbeite, auf einen Remote-Server zu übertragen, und wenn ich es auf dem Remote-Server ausführe, erhalte ich Fehler wie

egrep: Unmatched ) or \)
egrep: Unmatched ) or \)
./script.sh: line 229: ./helperScripts/script2.pl: No such file or directory

Ich habe diese Fehler nicht auf meinem Computer erhalten und wenn ich nachschaue, ob script2.pl in helperScripts ist, ist es dort

Wenn ich sh -version auf dem Remote-Server ausführe, erhalte ich

GNU bash, version 4.1.2(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Wenn ich sh -version auf dem Terminal meines Computers ausführe, erhalte ich

GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)
Copyright (C) 2007 Free Software Foundation, Inc.

Ich weiß nicht, ob das wichtig ist. Weiß jemand, was ich tun kann? Ich möchte lieber nicht die Dinge in meinem Skript neu schreiben müssen, weil ich das versucht habe und es scheint, dass immer mehr Probleme auftreten, wenn ich die neuen erstelle

Antwort1

Das ist nicht der Fall.brauchenwichtig zu sein, aber ja, esdürfenEs kommt darauf an, wie Sie schreiben. Und Sie haben das Skript nicht bereitgestellt, damit jemand darauf hinweist, wie man für eine Bourne-Shell schreibt. Wenn Sie lieber nur BASH-Versionen hätten, die besser miteinander kompatibel sind ...

InstallierenSelbstgebrautesauf Ihrem Mac mit Terminal.appoderiTerm2.app. Und installieren Sie mit Homebrew BASH ( brew install bash). Ändern Sie dann Ihre Shell auf dem Mac: chsh -s /usr/local/bin/bash. Abmelden. Anmelden. Damit erhalten Sie heute BASH 4.4 auf macOS/OS X, das weitaus kompatibler mit den anderen BASH-Versionen ist, die Sie haben. Dies erspart zwar nicht das Umschreiben aktueller Skripte, beseitigt aber mit ziemlicher Sicherheit die Probleme für neue Skripte.

Auch lokale Skripte auf dem Mac können verwendet werden, #!/usr/local/bin/bashohne dass Sie Ihre Shell ändern müssen.

Möglicherweise müssen Sie auch Xcode installieren, um Software aus Homebrew zu kompilieren. Wenn Sie dies nach der Installation von Xcode (aus dem App Store) noch nicht getan haben, installieren Sie die Befehlszeilentools von Xcode mit xcode-select --install.

verwandte Informationen