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
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
.
INSTALL_LOG_OUTPUT
det å være tom er en grunn.test
iif
uttalelsen. Det skal være[ "$argument" == "-automatic" ]; then
. Det kan eller ikke være relatert til den rapporterte feilen.$INSTALL_LOG_OUTPUT
var tre linjer senere -.-