Jeg har et script med en funktion i det:

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

Denne funktion fungerer som den skal. Det er en funktion at skrive noget i en logfil.

Jeg tilføjede nogle andre kommandoer til scriptet til læsning af scriptets givne parametre:

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 nye linjer, Jeg får nogle ikke-nødvendige meddelelser:

$INSTALL_LOG_OUTPUT: ambiguous redirect 

Jeg fandt ud af, at dette kommer fra de to linjer

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

Er der nogen der ved, hvorfor beskederne opstår?

Kommentarer

  • INSTALL_LOG_OUTPUT at være tom er en af årsagerne.
  • Der er en syntaksfejl i den anden test i if udsagnet. Det skal være [ "$argument" == "-automatic" ]; then. Det er måske eller måske ikke relateret til den rapporterede fejl.
  • @muru: Du havde ret. Tildelingen af filnavnet til $INSTALL_LOG_OUTPUT var tre linjer senere -.-

Svar

Sæt anførselstegn omkring INSTALL_LOG_OUTPUT i din funktion som denne:

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

Når du har kørt dit script igen, får du sandsynligvis en fejlmeddelelse, der angiver at INSTALL_LOG_OUTPUT er tom med en meddelelse af denne slags: bash: : No such file or directory.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *