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
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
.
INSTALL_LOG_OUTPUT
at være tom er en af årsagerne.test
iif
udsagnet. Det skal være[ "$argument" == "-automatic" ]; then
. Det er måske eller måske ikke relateret til den rapporterede fejl.$INSTALL_LOG_OUTPUT
var tre linjer senere -.-