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