GNU/Linux >> Znalost Linux >  >> Linux

Chyba 'Neočekávaný konec souboru' a 'Chyba při importu definice funkce' při spuštění shellscriptu pomocí qsub

Tento problém máte také ve skriptu wrapper, který používá

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

pokud jej použijete k odeslání dalšího skriptu bash shell. Vytváří nepříjemné

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

(toto je Sun Grid Engine 211.11 běžící na CentOS 6.6) Ukázalo se, že věci se vyřeší jednoduchým umístěním následujícího na vrchní část obalového skriptu (nikoli na zabalený skript):

unset module

To je vše.


V /usr/share/Modules/init/bash zakomentoval řádek 'export -f module'.

V normálním přihlašovacím shellu bude modules.sh volán z profile.d, takže příkaz module je dostupný. V nepřihlašovacím shellu, jako je skript appwrapper, nejprve vytvoří výše uvedený soubor.

Obecně ve skriptu aplikací po získání zdroje nad souborem opět dávají příkaz "module load apps/vendor/app", což znamená extra zdroje.

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


Z nějakého neznámého důvodu problém vyřešilo přidání středníků na konec každého řádku.


Linux
  1. Spuštění souboru skriptu přes Ssh přes Sudo?

  2. najít a zkopírovat soubor pomocí Bash

  3. Přidejte sloupec na konec souboru CSV pomocí 'awk' ve skriptu BASH

  1. změny parametrů modulu jádra (pomocí /sys/module)

  2. Chyba syntaxe:neočekávaný konec souboru (očekává se tedy)

  3. Použití rz a sz pod linuxovým shellem

  1. V Bash, kdy alias, kdy skript a kdy napsat funkci?

  2. Spuštění skriptu s „. “ A se „zdrojem“?

  3. Zachycení STDERR a STDOUT do souboru pomocí tee