Mam skrypt z funkcją:

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

Ta funkcja działa tak, jak powinna. Jest to funkcja zapisująca coś w pliku dziennika.

Dodałem kilka innych poleceń do skryptu, aby odczytać podane parametry skryptu:

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 z nowymi liniami, Otrzymuję niepotrzebne wiadomości:

$INSTALL_LOG_OUTPUT: ambiguous redirect 

Dowiedziałem się, że pochodzi z dwóch linii

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

Czy ktoś wie, dlaczego pojawiają się komunikaty.

Komentarze

  • INSTALL_LOG_OUTPUT pusta jest jednym z powodów.
  • Jest błąd składni w drugiej test instrukcji if. Powinien to być [ "$argument" == "-automatic" ]; then. Może to być związane ze zgłoszonym błędem, ale nie musi.
  • @muru: Miałeś rację. Nazwa pliku dla $INSTALL_LOG_OUTPUT została przypisana trzy wiersze później -.-

Odpowiedź

Umieść w funkcji INSTALL_LOG_OUTPUT w cudzysłowie, na przykład:

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

Po ponownym uruchomieniu skryptu prawdopodobnie zostanie wyświetlony komunikat o błędzie wskazujący że INSTALL_LOG_OUTPUT jest pusty, z komunikatem tego rodzaju: bash: : No such file or directory.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *