Ich habe Ein Skript mit einer Funktion:

function install_log() { echo "$1" >> $INSTALL_LOG_OUTPUT 2>&1 } 

Diese Funktion funktioniert ordnungsgemäß. Es ist eine Funktion, etwas in eine Protokolldatei zu schreiben.

Ich habe dem Skript einige andere Befehle hinzugefügt, um die angegebenen Parameter des Skripts zu lesen:

AUTOMATIC_INSTALL= for argument in "$@" do install_log "-> parameter $argument" if [ "$argument" == "--automatic" ] || ["$argument" == "-automatic" ]; then AUTOMATIC_INSTALL=True fi done install_log "# AUTOMATIC_INSTALL: $AUTOMATIC_INSTALL" 

Aber mit den neuen Zeilen, Ich erhalte einige nicht benötigte Nachrichten:

$INSTALL_LOG_OUTPUT: ambiguous redirect 

Ich habe herausgefunden, dass dies aus den beiden Zeilen

install_log "-> parameter $argument" # ... install_log "# AUTOMATIC_INSTALL: $AUTOMATIC_INSTALL" 

Weiß jemand, warum die Nachrichten auftreten.

Kommentare

  • INSTALL_LOG_OUTPUT leer zu sein ist ein Grund.
  • Es gibt Ein Syntaxfehler in der zweiten test der if -Anweisung. Es sollte [ "$argument" == "-automatic" ]; then sein. Es kann mit dem gemeldeten Fehler zusammenhängen oder nicht.
  • @muru: Sie hatten Recht. Die Zuweisung des Dateinamens für $INSTALL_LOG_OUTPUT erfolgte drei Zeilen später -.-

Antwort

Fügen Sie in Ihrer Funktion Anführungszeichen um INSTALL_LOG_OUTPUT ein:

function install_log() { echo "$1" >> "$INSTALL_LOG_OUTPUT" 2>&1 } 

Nach dem erneuten Ausführen Ihres Skripts wird wahrscheinlich eine Fehlermeldung angezeigt dass INSTALL_LOG_OUTPUT leer ist, mit einer Nachricht dieser Art: bash: : No such file or directory.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.