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
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
.
INSTALL_LOG_OUTPUT
a fi gol este un motiv.test
a declarațieiif
. Ar trebui să fie[ "$argument" == "-automatic" ]; then
. Poate fi sau nu legat de eroarea raportată.$INSTALL_LOG_OUTPUT
a fost trei rânduri mai târziu -.-