简单bash函数不理解git
我使用自制软件在我的机器上安装了git,如下所示简单bash函数不理解git,bash,Bash,我使用自制软件在我的机器上安装了git,如下所示 $ git --version git version 1.7.3.4 我正在学习bash编程,我的~/.bashrc中有以下函数 function gitlab { CMD= "git --version" $CMD } 然而,当我运行gitlab时,我得到以下输出 $ gitlab -bash: git --version: command not found 我正在mac上使用bash。您正在将整个字符串作为单个命令运行。有可
$ git --version
git version 1.7.3.4
我正在学习bash编程,我的~/.bashrc中有以下函数
function gitlab {
CMD= "git --version"
$CMD
}
然而,当我运行gitlab时,我得到以下输出
$ gitlab
-bash: git --version: command not found
我正在mac上使用bash。您正在将整个字符串作为单个命令运行。有可能有一个名为foo-bar的二进制文件,其中包含一个空格,您可以按照所示的方式运行它 编辑:你到底想做什么?在运行变量之前,无需将命令存储在变量中:
gitlab() {git --version}
及
这两个函数的作用与您从上述函数中所期望的相同。通常,建议在别名上方使用函数解决方案,并且不需要在其前面加上函数前缀。您可以将整个字符串作为单个命令运行。有可能有一个名为foo-bar的二进制文件,其中包含一个空格,您可以按照所示的方式运行它 编辑:你到底想做什么?在运行变量之前,无需将命令存储在变量中:
gitlab() {git --version}
及
这两个函数的作用与您从上述函数中所期望的相同。通常,建议在别名上方使用函数解决方案,并且不需要在别名前面加上函数前缀。尝试将字符串git-version分配给CMD变量时,=后面有多余的空格。shell认为这是一个空字符串赋值给CMD变量,该变量只在下一个命令的本地。在引用您的命令时,shell尝试执行一个名为git-version的程序。由于不存在这样的程序,它就失败了 您的函数的解释几乎与以下函数类似。此处更容易看到错误:
function() {
CMD=
"git --version"
unset -v CMD
$CMD
}
您应该删除空格字符,以便按照预期进行解释。但是,有更简单的方法来做同样的事情:
function gitlab() {
git --version
}
如果您希望将git-version执行的结果存储在CMD变量中,那么应该这样做:
function gitlab() {
VERSION="$(git --version)"
echo "$VERSION"
}
编辑:更正了我的回复,因为@DarkDust发现了错误。尝试将字符串git-version分配给CMD变量时,=后面有多余的空格。shell认为这是一个空字符串赋值给CMD变量,该变量只在下一个命令的本地。在引用您的命令时,shell尝试执行一个名为git-version的程序。由于不存在这样的程序,它就失败了 您的函数的解释几乎与以下函数类似。此处更容易看到错误:
function() {
CMD=
"git --version"
unset -v CMD
$CMD
}
您应该删除空格字符,以便按照预期进行解释。但是,有更简单的方法来做同样的事情:
function gitlab() {
git --version
}
如果您希望将git-version执行的结果存储在CMD变量中,那么应该这样做:
function gitlab() {
VERSION="$(git --version)"
echo "$VERSION"
}
编辑:更正了我的回复,因为它是@DarkDust发现的错误。您的问题是CMD=后面的空格。计算结果为CMD=git-version。首先,将环境变量CMD设置为空字符串,然后调用命令git-version。请注意,由于。。。shell确实尝试执行git-version命令,而不是git-with-argument-version命令。只需删除=和之间的空格即可解决此问题。您的问题是CMD=之后的空格。计算结果为CMD=git-version。首先,将环境变量CMD设置为空字符串,然后调用命令git-version。请注意,由于。。。shell确实尝试执行git-version命令,而不是git-with-argument-version命令。只需删除=和之间的空格即可解决此问题。我不懂你的意思。你能详细说明一下吗。还有,我需要改变什么来修复它。恐怕你只对了一半:-请看我对Sylvain Defrsne的评论。我不明白你的意思。你能详细说明一下吗。还有,我需要改变什么来修复它。恐怕你只对了一半:-请看我对Sylvain Defrsne的评论。不完全正确。他没有将命令分配给变量CMD,请注意等号后面的空格。CMD=git-version$CMD的计算结果很好,但CMD=git-version$他就是这么做的,你说得对!哦!为了我自己的缘故,更正我的答案。不完全正确。他没有将命令分配给变量CMD,请注意等号后面的空格。CMD=git-version$CMD的计算结果很好,但CMD=git-version$他就是这么做的,你说得对!哦!为了我自己的缘故,更正我的答案。我没有看到那个空间。我把问题看得太快了,你明白了。这是空间。对于其他人,是的,我可以使用alias,但这个示例只是一个更大函数的快照。谢谢大家。你说得对。我没有看到那个空间。我把问题看得太快了,你明白了。这是空间。对于其他人,是的,我可以使用alias,但这个示例只是一个更大函数的快照。谢谢大家。请看。请看。