0

我想创建一个脚本名称git-as,它基本上是git使用一堆预定义参数调用的别名。

git --git-dir="$1/.git" --work-tree="$1/" <<OTHER PARAMS>>

当我想在另一个存储库中调用 git 时,我使用:

git-as "$SRC_REPO" commit -m "Changes made to $CLASS_NAME"

如何让“其他参数”位正常工作?

请记住,我希望将$1参数(包含存储库位置)传递给 git。此外,其他参数可能包括双引号,例如示例中使用的双引号。

4

3 回答 3

3

在 bash(但不是所有其他 shell)中,您可以使用数组切片的变体来挑选一些参数,而无需shift先获取其他参数:

#!/bin/bash
git --git-dir="$1/.git" --work-tree="$1/" "${@:2}"
于 2013-02-17T00:16:37.160 回答
2

Shell 脚本允许使用shift n左移 $*/$@ 参数,这可能适合您的目的。

# t.sh
echo ARGS $*
shift 
echo ARGS $*

bash t.sh 1 2 3 4 5

ARGS 1 2 3 4 5
ARGS 2 3 4 5
于 2013-02-16T23:57:11.370 回答
2

这是我的做法:

#!/bin/bash
readonly Directory="$1"
shift
git --git-dir="$Directory/.git" "$@"

首先,这会将存储库位置 ( ) 复制$1到另一个变量 ( $Directory)。然后它将shift所有程序参数向左移动一个,因此$@只包含用于 Git 的参数。从那里开始,只需使用新参数调用 Git 即可。

于 2013-02-17T00:05:42.087 回答