Tengo un script con una función en él:

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

Esta función está funcionando como debería. Es una función para escribir algo en un archivo de registro.

Agregué algunos otros comandos al script, para leer los parámetros dados del 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" 

Pero con las nuevas líneas, Recibo algunos mensajes que no son necesarios:

$INSTALL_LOG_OUTPUT: ambiguous redirect 

Descubrí que esto proviene de las dos líneas

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

¿Alguien sabe por qué aparecen los mensajes?

Comentarios

  • INSTALL_LOG_OUTPUT estar vacío es una razón.
  • Hay un error de sintaxis en la segunda test de la if instrucción. Debe ser [ "$argument" == "-automatic" ]; then. Puede estar relacionado o no con el error informado.
  • @muru: Tenías razón. La asignación del nombre de archivo para $INSTALL_LOG_OUTPUT fue tres líneas después -.-

Respuesta

Ponga entre comillas INSTALL_LOG_OUTPUT en su función, así:

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

Después de ejecutar su script nuevamente, probablemente obtendrá un mensaje de error que indica que INSTALL_LOG_OUTPUT está vacío, con un mensaje de este tipo: bash: : No such file or directory.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *