考虑到git中的bug,git-submodule.sh当前读取(重新排序):
[iterating over command line arguments]
--reference)
case "$2" in '') usage ;; esac
reference="--reference=$2"
shift
;;
--reference=*)
reference="$1"
shift
;;
[...]
if test -n "$reference"
then
git-clone $quiet "$reference" -n "$url" "$path" --separate-git-dir "$gitdir"
else
git-clone $quiet -n "$url" "$path" --separate-git-dir "$gitdir"
fi ||
die "$(eval_gettext "Clone of '\$url' into submodule path '\$path' failed")"这只使用--reference给出的最后一个参数。我现在想增强这个功能,以便将所有--reference选项传递给git-clone。对于琐碎的参数(reference="$reference --reference=$2")来说,这是微不足道的,但是当我想到包含空格、引号或shell元字符的参数时,我的头脑就会陷入困境。
避免这种累积争论的最佳做法是什么?
发布于 2012-03-07 18:37:15
最佳做法是使用bash数组:
declare -a references
#...
--reference)
case ... esac
references+=("--reference=$2")
shift
;;
--reference=*)
references+=("$1")
shift
;;
#...
# no need to test the array for emptiness
git-clone $quiet "${references[@]}" -n "$url" "$path" --separate-git-dir "$gitdir"但是,引用的脚本使用/bin/sh代替。
https://stackoverflow.com/questions/9606513
复制相似问题