Eu tenho um script com uma função:

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

Esta função está funcionando como deveria. É uma função para escrever algo em um arquivo de log.

Eu adicionei alguns outros comandos ao script, para ler os parâmetros fornecidos do 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" 

Mas com as novas linhas, Recebo algumas mensagens desnecessárias:

$INSTALL_LOG_OUTPUT: ambiguous redirect 

Eu descobri que isso vem de duas linhas

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

Alguém sabe por que as mensagens estão ocorrendo.

Comentários

  • INSTALL_LOG_OUTPUT estar vazio é uma razão.
  • Há um erro de sintaxe no segundo test da if instrução. Deve ser [ "$argument" == "-automatic" ]; then. Pode ou não estar relacionado ao erro relatado.
  • @muru: Você estava certo. A atribuição do nome do arquivo para $INSTALL_LOG_OUTPUT foi três linhas depois -.-

Resposta

Coloque aspas em torno de INSTALL_LOG_OUTPUT em sua função, assim:

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

Depois de executar o script novamente, você provavelmente receberá uma mensagem de erro indicando que INSTALL_LOG_OUTPUT está vazio, com uma mensagem deste tipo: bash: : No such file or directory.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *