Am un script cu o funcție:

function install_log() { echo "$1" >> $INSTALL_LOG_OUTPUT 2>&1 } 

Această funcție funcționează așa cum ar trebui. Este o funcție de a scrie ceva într-un fișier jurnal.

Am adăugat alte comenzi la script, pentru citirea parametrilor dați de 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" 

Dar cu noile linii, Primesc câteva mesaje care nu sunt necesare:

$INSTALL_LOG_OUTPUT: ambiguous redirect 

Am aflat că acest lucru provine din cele două linii

install_log "-> parameter $argument" # ... install_log "# AUTOMATIC_INSTALL: $AUTOMATIC_INSTALL" 

Știe cineva de ce apar mesajele.

Comentarii

  • INSTALL_LOG_OUTPUT a fi gol este un motiv.
  • Există o eroare de sintaxă în a doua test a declarației if. Ar trebui să fie [ "$argument" == "-automatic" ]; then. Poate fi sau nu legat de eroarea raportată.
  • @muru: Ai avut dreptate. Atribuirea numelui de fișier pentru $INSTALL_LOG_OUTPUT a fost trei rânduri mai târziu -.-

Răspuns

Puneți ghilimele în jurul INSTALL_LOG_OUTPUT în funcția dvs., astfel:

function install_log() { echo "$1" >> "$INSTALL_LOG_OUTPUT" 2>&1 } 

După ce rulați din nou scriptul, veți primi probabil un mesaj de eroare care să indice că INSTALL_LOG_OUTPUT este gol, cu un mesaj de acest fel: bash: : No such file or directory.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *