所以我想在调用git之前和之后运行一段AppleScript(不是下面的AppleScript,不同的AppleScript,但这应该得到重点)。我遇到的问题是git命令有一个可变数量的参数,所以我不能只使用$1
给它第一个,它必须是传入的数字。这里是我的代码.bash_profile
:
function git() {
osascript -e 'display alert "before git command"';
git "$@";
osascript -e 'display alert "after git command"';
}
预期的结果是第一段AppleScript运行,git运行时提供了任何数量的参数,然后最后一段AppleScript运行。真正发生的是第一块苹果无限期地反复运行。我认为问题可能是git之后的"$@"
。使用"$@"
的{{3}}将转储所有参数。但是第一段AppleScript只是在无限循环中运行。是什么给了什么?
答案 0 :(得分:1)
你破坏了git
名称。您的函数为git
,并在函数中调用git
。恭喜你,你有递归。
你需要告诉shell在那里调用真正的 git二进制文件。
使用command git
或/full/path/to/git
等
还有\git
(但我认为这只是避免了别名而不是功能)。
另外,正如@ryenus在评论中指出的那样。 env
二进制/usr/bin/env
或/bin/env
也可以用于此目的(尽管它不仅仅是避免该功能,还需要生成额外的外部进程)。