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
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
.
INSTALL_LOG_OUTPUT
estar vacío es una razón.test
de laif
instrucción. Debe ser[ "$argument" == "-automatic" ]; then
. Puede estar relacionado o no con el error informado.$INSTALL_LOG_OUTPUT
fue tres líneas después -.-