Jag har ett skript med en funktion i det:

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

Denna funktion fungerar som den ska. Det är en funktion att skriva något i en loggfil.

Jag lade till några andra kommandon i skriptet för att läsa de givna parametrarna i skriptet:

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" 

Men med de nya raderna, Jag får några meddelanden som inte behövs:

$INSTALL_LOG_OUTPUT: ambiguous redirect 

Jag fick reda på att detta kommer från de två raderna

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

Vet någon varför meddelandena förekommer.

Kommentarer

  • INSTALL_LOG_OUTPUT att vara tom är en anledning.
  • Det finns ett syntaxfel i det andra test i if -uttalandet. Det ska vara [ "$argument" == "-automatic" ]; then. Det kan eller inte är relaterat till det rapporterade felet.
  • @muru: Du hade rätt. Tilldelningen av filnamnet för $INSTALL_LOG_OUTPUT var tre rader senare -.-

Svar

Lägg citat runt INSTALL_LOG_OUTPUT i din funktion, så här:

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

När du har kört skriptet igen får du förmodligen ett felmeddelande som anger att INSTALL_LOG_OUTPUT är tomt, med ett sådant meddelande: bash: : No such file or directory.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *