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
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
.
INSTALL_LOG_OUTPUT
prázdné místo je jedním z důvodů.test
prohlášeníif
. Mělo by to být[ "$argument" == "-automatic" ]; then
. Může, ale nemusí to souviset s nahlášenou chybou.$INSTALL_LOG_OUTPUT
bylo o tři řádky později -. –