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

Fehler „Unerwartetes Dateiende“ und „Fehler beim Importieren der Funktionsdefinition“ beim Ausführen von Shellscript mit qsub

Habe dieses Problem auch in einem Wrapper-Skript, das

verwendet
qsub -shell no -b yes -cwd -V somescript.bash arg1 arg2 etc

wenn Sie es verwenden, um ein weiteres Bash-Shell-Skript zu senden. Es erzeugt das lästige

/bin/sh: module: line 1: syntax error: unexpected end of file
/bin/sh: error importing function definition for `BASH_FUNC_module'

(Dies ist die Sun Grid Engine 211.11, die auf CentOS 6.6 ausgeführt wird.) Es stellt sich heraus, dass die Dinge gelöst werden, indem einfach Folgendes auf das Wrapper-Skript gesetzt wird (nicht auf das umschlossene Skript):

unset module

Das ist alles.


In /usr/share/Modules/init/bash die Zeile 'export -f module' auskommentiert.

In einer normalen Login-Shell wird modules.sh von profile.d aufgerufen, sodass der Modulbefehl verfügbar ist. In einer Nicht-Login-Shell, wie einem Appwrapper-Skript, bezieht es einfach zuerst die obige Datei.

Im Allgemeinen geben sie im Anwendungsskript nach dem Sourcing der obigen Datei erneut den Befehl „module load apps/vendor/app“ ein, was zusätzliches Sourcing bedeutet.

Referenz::- http://gridengine.org/pipermail/users/2011-November/002019.html


Aus irgendeinem mir unbekannten Grund hat das Hinzufügen von Semikolons am Ende jeder Zeile das Problem behoben.


Linux
  1. Ausführen einer Skriptdatei über SSH durch Sudo?

  2. Suchen und kopieren Sie die Datei mit Bash

  3. SCHWERWIEGEND:Fehler „Modul nicht gefunden“ bei Verwendung von modprobe

  4. Fügen Sie mithilfe von „awk“ im BASH-Skript eine Spalte am Ende der CSV-Datei hinzu

  5. Kopieren und überschreiben Sie eine Datei im Shell-Skript

Arbeiten Sie mit Linux-Diff und -Patch an einer Datei zusammen

Bringen Sie podman unter Windows mit Linux zum Laufen

So zeichnen Sie Linux-Terminalsitzungen mit den Befehlen „script“ und „scriptreplay“ auf und geben sie wieder

Änderungen der Parameter des Kernelmoduls (unter Verwendung von /sys/module)

Verwendung von rz und sz unter Linux-Shell

Erfassen von STDERR und STDOUT in einer Datei mit tee