Script Bash com aspas e espaços

3

Estou tentando obter uma boa saída do git:

FORMAT='%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'
LOG_PARAMS="--color --pretty=format:$FORMAT --abbrev-commit --no-walk"
function gch() {
  git log $LOG_PARAMS $(commits)
}

(onde commits é uma função que coleta commits relevantes). Mas eu entendo isso:

fatal: ambiguous argument '%(s)': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions

Presumivelmente, isso tem algo a ver com as citações e espaços, mas estou longe de ser fluente em bash. Alguma ajuda?

    
por huppy_doodoo 24.09.2012 / 16:22

1 resposta

3

Você acaba de sofrer de divisão de palavras - Use More Quotes ™ e use arrays se você quiser enviar vários parâmetros para um comando:

LOG_PARAMS=("--color" "--pretty=format:$FORMAT" "--abbrev-commit" "--no-walk")
...
    git log "${LOG_PARAMS[@]}" "$(commits)"

Isso funciona para mim sem a parte "$(commits)" , que eu acho que é outra função que você criou.

    
por 24.09.2012 / 16:35