ho uno script con una funzione al suo interno:
function install_log() { echo "$1" >> $INSTALL_LOG_OUTPUT 2>&1 }
Questa funzione funziona come dovrebbe. È una funzione per scrivere qualcosa in un file di registro.
Ho aggiunto altri comandi allo script, per leggere i parametri dati dello script:
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"
Ma con le nuove righe, Ricevo alcuni messaggi non necessari:
$INSTALL_LOG_OUTPUT: ambiguous redirect
Ho scoperto che questo viene dalle due righe
install_log "-> parameter $argument" # ... install_log "# AUTOMATIC_INSTALL: $AUTOMATIC_INSTALL"
Qualcuno sa perché i messaggi si verificano.
Commenti
Risposta
Inserisci virgolette intorno a INSTALL_LOG_OUTPUT nella tua funzione, in questo modo:
function install_log() { echo "$1" >> "$INSTALL_LOG_OUTPUT" 2>&1 }
Dopo aver eseguito di nuovo lo script, probabilmente riceverai un messaggio di errore che indica che INSTALL_LOG_OUTPUT è vuoto, con un messaggio di questo tipo: bash: : No such file or directory
.
INSTALL_LOG_OUTPUT
essere vuoti è uno dei motivi.test
dellistruzioneif
. Dovrebbe essere[ "$argument" == "-automatic" ]; then
. Potrebbe essere correlato o meno allerrore segnalato.$INSTALL_LOG_OUTPUT
era tre righe dopo -.-