op te lossen een script met een functie erin:

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

Deze functie werkt zoals het hoort. Het is een functie om iets in een logbestand te schrijven.

Ik heb een aantal andere commandos aan het script toegevoegd voor het lezen van de gegeven parameters van het script:

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" 

Maar met de nieuwe regels, Ik krijg een aantal niet benodigde berichten:

$INSTALL_LOG_OUTPUT: ambiguous redirect 

Ik kwam erachter dat dit uit de twee regels komt

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

Weet iemand waarom de berichten worden weergegeven.

Reacties

  • INSTALL_LOG_OUTPUT leeg zijn is één reden.
  • Er is een syntaxisfout in de tweede test van de if -instructie. Het moet [ "$argument" == "-automatic" ]; then zijn. Het kan al dan niet verband houden met de gerapporteerde fout.
  • @muru: Je had gelijk. De toewijzing van de bestandsnaam voor $INSTALL_LOG_OUTPUT was drie regels later -.-

Antwoord

Zet aanhalingstekens rond INSTALL_LOG_OUTPUT in uw functie, als volgt:

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

Nadat u uw script opnieuw heeft uitgevoerd, krijgt u waarschijnlijk een foutmelding die aangeeft dat INSTALL_LOG_OUTPUT leeg is, met een bericht van deze soort: bash: : No such file or directory.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *