带有引号和空格的 Bash 脚本

带有引号和空格的 Bash 脚本

我正在尝试从 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)
}

(其中 commits 是收集相关提交的函数)。但我得到的是这个:

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

大概这与引用和空格有关,但我对 bash 还很不熟练。有什么帮助吗?

答案1

你刚刚遭受了分词-使用更多报价™如果要向命令发送多个参数,请使用数组:

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

这对我来说没有这个"$(commits)"部分,我猜这是你创建的另一个函数。

相关内容