mám skript s funkcí v něm:

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

Tato funkce funguje tak, jak má. Jedná se o funkci zapsat něco do souboru protokolu.

Do skriptu jsem přidal několik dalších příkazů pro čtení zadaných parametrů skriptu:

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" 

Ale s novými řádky, Dostávám několik nepotřebných zpráv:

$INSTALL_LOG_OUTPUT: ambiguous redirect 

Zjistil jsem, že to pochází ze dvou řádků

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

Ví někdo, proč se zprávy vyskytují.

Komentáře

  • INSTALL_LOG_OUTPUT prázdné místo je jedním z důvodů.
  • Existuje chyba syntaxe ve druhém test prohlášení if. Mělo by to být [ "$argument" == "-automatic" ]; then. Může, ale nemusí to souviset s nahlášenou chybou.
  • @muru: Měli jste pravdu. Přiřazení názvu souboru pro $INSTALL_LOG_OUTPUT bylo o tři řádky později -. –

Odpověď

Vložte do své funkce uvozovky kolem INSTALL_LOG_OUTPUT, například takto:

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

Po opětovném spuštění skriptu se pravděpodobně zobrazí chybová zpráva označující že INSTALL_LOG_OUTPUT je prázdný, se zprávou tohoto druhu: bash: : No such file or directory.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *