引用符とスペースを含む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)
}

(ここでコミットは関連コミットを収集する関数です。)しかし、私が得るのはこれです:

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)"。おそらくあなたが作ったもう一つの機能のようです。

関連情報