Bash

帶引號和空格的 Bash 腳本

  • September 24, 2012

我正在嘗試從 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 還很不熟練。有什麼幫助嗎?

您剛剛遭受了分詞的困擾-如果您想將多個參​​數發送到命令,請使用更多引號™並使用數組:

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

這對我來說沒有"$(commits)"零件,我猜這是您創建的另一個功能。

引用自:https://unix.stackexchange.com/questions/49000