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

  • INSTALL_LOG_OUTPUT essere vuoti è uno dei motivi.
  • Cè un errore di sintassi nella seconda test dellistruzione if. Dovrebbe essere [ "$argument" == "-automatic" ]; then. Potrebbe essere correlato o meno allerrore segnalato.
  • @muru: avevi ragione. Lassegnazione del nome file per $INSTALL_LOG_OUTPUT era tre righe dopo -.-

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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *