Jai un script contenant une fonction:

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

Cette fonction fonctionne comme il se doit. Cest une fonction pour écrire quelque chose dans un fichier journal.

Jai ajouté dautres commandes au script, pour lire les paramètres donnés du 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" 

Mais avec les nouvelles lignes, Je reçois des messages inutiles:

$INSTALL_LOG_OUTPUT: ambiguous redirect 

Jai découvert que cela vient des deux lignes

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

Quelquun sait-il pourquoi les messages se produisent.

Commentaires

  • INSTALL_LOG_OUTPUT être vide est une raison.
  • Il y a une erreur de syntaxe dans la deuxième test de linstruction if. Il doit être [ "$argument" == "-automatic" ]; then. Cela peut ou non être lié à lerreur signalée.
  • @muru: Vous aviez raison. Lattribution du nom de fichier pour $INSTALL_LOG_OUTPUT était trois lignes plus tard -.-

Réponse

Mettez des guillemets autour de INSTALL_LOG_OUTPUT dans votre fonction, comme ceci:

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

Après avoir exécuté à nouveau votre script, vous obtiendrez probablement un message derreur indiquant que INSTALL_LOG_OUTPUT est vide, avec un message de cette sorte: bash: : No such file or directory.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *