bash如何使命令工作

时间:2011-01-14 21:11:01

标签: bash

我的〜/ .bashrc

中有以下bash函数
function gitlab {
  MSG='first commit'
  CMD="git commit -m '${MSG}'"
  echo $CMD
  $CMD
}

结果如下

$ gitlab 
git commit -m 'first commit'
error: pathspec 'commit'' did not match any file(s) known to git.

有什么问题?

4 个答案:

答案 0 :(得分:8)

答案 1 :(得分:1)

绝对阅读Ignacio链接到的BashFAQ / 050。

你可以试试这个:

function gitlab {
    local PS4='Running: '
    local msg='first commit'
    bash -xc "git commit -m '$msg'"
}

答案 2 :(得分:0)

尝试将提交消息放在双引号中,因为单引号和双引号对bash表示不同的含义。

function gitlab {
  MSG="first commit"
  CMD=`git commit -m \"${MSG}\"`
  echo $CMD
  $CMD
}

答案 3 :(得分:0)

我想您应该使用\"代替',所以它应该是这样的:

CMD="git commit -m \"${MSG}\""