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
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
.
INSTALL_LOG_OUTPUT
att vara tom är en anledning.test
iif
-uttalandet. Det ska vara[ "$argument" == "-automatic" ]; then
. Det kan eller inte är relaterat till det rapporterade felet.$INSTALL_LOG_OUTPUT
var tre rader senare -.-