使用shell脚本克隆几个git仓库

时间:2019-02-17 22:49:37

标签: bash shell

我想同时克隆几个git仓库。但是我的脚本似乎无法正常工作。

Syntax error: "(" unexpected

返回的内容是:from mnist.loader import MNIST

我声明字符串列表的方式是否有问题?

1 个答案:

答案 0 :(得分:2)

#!/bin/sh

这是一个sh脚本。 Sh没有数组或内置declare。由于您要使用bash编写,因此请使用

启动脚本
#!/bin/bash

cd "$HOME"/git || …

不是单独处理每个错误-且仅在您记得要进行处理时-请将set -e放在脚本的开头,这样它将在出现错误时停止。


for i in ${git_resources[@]} ; do
 echo  $i

Always use double quotes around variable expansions,除非您知道为什么需要将它们排除在外。即使在扩展数组时也是如此:${git_resources[@]}拆分并遍历单个数组元素。您需要"${git_resources[@]}"才能获得数组元素的列表。


#!/bin/bash

set -e

declare -a git_resources=(
    "https://git.polarsys.org/c/capella/capella.git"  
    "https://github.com/mbats/mindstorms"
)

if [ ! -d "$HOME"/git ]; then
    mkdir "$HOME"/git
fi
cd "$HOME"/git

for url in "${git_resources[@]}"; do
    dir="${url##*/}"
    dir="${dir%.git}"
    if [ -e "$dir/.git" ]; then
        git -C "$dir" update
    else
        git clone "$url"
    fi
done