Minulla on komentosarja, jossa on toiminto:
function install_log() { echo "$1" >> $INSTALL_LOG_OUTPUT 2>&1 }
Tämä toiminto toimii kuten pitäisi. Se on toiminto kirjoittaa jotain lokitiedostoon.
Lisäsin komentosarjaan joitain muita komentoja komentosarjan annettujen parametrien lukemiseksi:
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"
Mutta uusien rivien kanssa Saan joitain tarpeettomia viestejä:
$INSTALL_LOG_OUTPUT: ambiguous redirect
Huomasin, että tämä tulee kahdesta rivistä
install_log "-> parameter $argument" # ... install_log "# AUTOMATIC_INSTALL: $AUTOMATIC_INSTALL"
Tietääkö kukaan, miksi viestit esiintyvät.
Kommentit
Vastaus
Laita lainausmerkit funktion INSTALL_LOG_OUTPUT ympärille seuraavasti:
function install_log() { echo "$1" >> "$INSTALL_LOG_OUTPUT" 2>&1 }
Kun olet suorittanut komentosarjan uudelleen, saat todennäköisesti virheilmoituksen, joka ilmoittaa että INSTALL_LOG_OUTPUT on tyhjä, ja tämän tyyppinen viesti: bash: : No such file or directory
.
INSTALL_LOG_OUTPUT
tyhjäksi oleminen on yksi syy.if
-lauseen toisessatest
. Sen tulisi olla[ "$argument" == "-automatic" ]; then
. Se voi liittyä ilmoitettuun virheeseen tai ei.$INSTALL_LOG_OUTPUT
tiedostonimi oli kolme riviä myöhemmin -.-