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
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
.
INSTALL_LOG_OUTPUT
estar vazio é uma razão.test
daif
instrução. Deve ser[ "$argument" == "-automatic" ]; then
. Pode ou não estar relacionado ao erro relatado.$INSTALL_LOG_OUTPUT
foi três linhas depois -.-