2012-04-02 5 views
0

Ich bin mit einem wirklich seltsamen Problem auf einem Bash-Skript konfrontiert, und würde gerne wissen, ob jemand dieses Problem bereits hatte. Mein Skript wirft grundsätzlich zufällige "command not found" Fehler in einer bestimmten Zeile, aber nicht immer mit dem gleichen "Befehl". Hier ein Beispiel:Zufälliges Verhalten von "Befehl nicht gefunden" in Bash-Skript, das nur einen Teil des Befehls

./myscript.sh: line 193: e: command not found 
    ./myscript.sh: line 194: iles: command not found 
    ./myscript.sh: line 194: ge_files: command not found 

Und hier sind die inkriminierten Linien

184 for SERVER in `echo $SERVERS` ; do 
185 - 192 Do some stuff... 
193 done 
194 merge_files 

(merge_files ist eine Funktion, die zuvor in dem Skript erklärt wurde.)

So das Problem scheint zu sein, dass es diese Zeilen von Zeit zu Zeit spaltet? Es scheint wirklich zufällig, da es nicht immer bricht, nur manchmal (ich denke, etwas falsch in der Eingabe des Skripts? Ich analysiere Protokolle)

Hat jemand jemals das konfrontiert?

+2

versuchen Sie, mit dem kleinstmöglichen Skript zu kommen, das das Problem reproduziert. –

+3

bearbeiten (und speichern) Sie das Skript, während es ausgeführt wird? –

+1

schalten Sie das Shell-Debugging ein, d. H. 'Set -vx', dann sehen Sie die Werte der Variablen. Auch wenn Ihre Quelle für '$ SERVERS' aus einer Datei stammt, wird diese Datei auf MSWindows/DOS erstellt? Wenn ja, benutzen Sie 'dos2unix', um '^ M \ Zeichen, die Probleme verursachen könnten, zu entfernen. Viel Glück. – shellter

Antwort

0

Vielleicht liest irgendeiner Ihrer Befehle (ffmpeg?) Von der Standardeingabe, die die Befehle abschneidet, so dass Sie nur einen Teil davon sehen. Versuchen Sie, Ihren Befehlen < /dev/null hinzuzufügen, um zu sehen, ob das das Problem ist

+0

Nein, alle meine Befehle sind ziemlich einfach und rufen andere .sh-Skripte auf, die sich selbst hauptsächlich auf einige "Funde" konzentrieren, um Listen von Dateien abzurufen. Ich werde die/dev/null Sache versuchen, danke! –