我想同时克隆几个git仓库。但是我的脚本似乎无法正常工作。
Syntax error: "(" unexpected
返回的内容是:from mnist.loader import MNIST
。
我声明字符串列表的方式是否有问题?
答案 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