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
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
.
INSTALL_LOG_OUTPUT
être vide est une raison.test
de linstructionif
. Il doit être[ "$argument" == "-automatic" ]; then
. Cela peut ou non être lié à lerreur signalée.$INSTALL_LOG_OUTPUT
était trois lignes plus tard -.-