我想创建一个脚本名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
param(包含存储库位置)传递给git。此外,其他参数可能包括双引号,例如显示它们使用的示例。
答案 0 :(得分:3)
在bash(但不是所有其他shell)中,您可以使用array slicing上的变体来挑选一些参数而不先让shift
其他参数:
#!/bin/bash
git --git-dir="$1/.git" --work-tree="$1/" "${@:2}"
答案 1 :(得分:2)
Shell脚本允许使用shift n
左移$ * / $ @ args,这可能适合您的目的。
# 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
答案 2 :(得分:2)
我将如何做到这一点:
#!/bin/bash
readonly Directory="$1"
shift
git --git-dir="$Directory/.git" "$@"
首先,这会将存储库位置($1
)复制到另一个变量($Directory
)。然后它使用shift
将所有程序参数向左移动一个,因此$@
只包含用于Git的参数。从那里开始,用新的参数调用Git只是一个简单的问题。