Jeg har et skript med en funksjon i:

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

Denne funksjonen fungerer som den skal. Det er en funksjon å skrive noe inn i en loggfil.

Jeg la til noen andre kommandoer i skriptet for å lese de gitte parametrene for 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 nye linjene, Jeg får noen ikke-nødvendige meldinger:

$INSTALL_LOG_OUTPUT: ambiguous redirect 

Jeg fant ut at dette kommer fra de to linjene

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

Er det noen som vet hvorfor meldingene skjer?

Kommentarer

  • INSTALL_LOG_OUTPUT det å være tom er en grunn.
  • Det er en syntaksfeil i den andre test i if uttalelsen. Det skal være [ "$argument" == "-automatic" ]; then. Det kan eller ikke være relatert til den rapporterte feilen.
  • @muru: Du hadde rett. Tildelingen av filnavnet for $INSTALL_LOG_OUTPUT var tre linjer senere -.-

Svar

Sett anførselstegn rundt INSTALL_LOG_OUTPUT i din funksjon, slik:

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

Når du har kjørt skriptet igjen, vil du sannsynligvis få en feilmelding som indikerer at INSTALL_LOG_OUTPUT er tom, med en slik melding: bash: : No such file or directory.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *