A leitura da variável de ambiente no alias de comando faz com que ela seja avaliada?

1

Eu tenho um alias simples para gravar arquivos de log (isso é o que eu tenho no meu arquivo .profile):

logtee() {
    ${TEST_LOG_FOLDER:?"empty_log_folder"}
    tee -a $TEST_LOG_FOLDER/$1
}

Estou lendo a pasta da variável de ambiente (portanto, essa variável tem valor semelhante a 'd / my / logs'). No entanto, quando tento usar esse alias executando echo 'this is reading path from env.variable!' | logtee whatever.log ele funciona, mas a saída é: sh.exe": /d/my/log/path: is a directory .
Fiz algo de errado? Por que a variável de ambiente de leitura avalia isso? Eu suspeito que tem algo a ver com o fato de que é um alias, porque no script usual .sh código semelhante funciona sem problemas
P.S. Estou usando msysgit no Windows 7, pode ser esse o problema?

    
por chester89 02.08.2016 / 14:11

1 resposta

3

A primeira linha de sua função é de fato avaliar isso. Você poderia substituí-lo por:

echo ${TEST_LOG_FOLDER:?"empty_log_folder"} > /dev/null

Uma solução melhor seria:

[ -d "${TEST_LOG_FOLDER:?'empty_log_folder'}" ] && \

A melhor solução não é usar uma linha separada, então toda a função se torna: -

logtee() {
    tee -a "${TEST_LOG_FOLDER:?'empty_log_folder'}/$1"
}

Note que alterei a citação, caso haja espaço em $TEST_LOG_FOLDER ou $1 .

    
por 02.08.2016 / 14:40