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

  • INSTALL_LOG_OUTPUT tyhjäksi oleminen on yksi syy.
  • Siellä on syntaksivirhe if -lauseen toisessa test. Sen tulisi olla [ "$argument" == "-automatic" ]; then. Se voi liittyä ilmoitettuun virheeseen tai ei.
  • @muru: Olit oikeassa. Tiedostonimen $INSTALL_LOG_OUTPUT tiedostonimi oli kolme riviä myöhemmin -.-

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.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *