Запрашивать имя пути у пользователя в интерактивном режиме редко бывает целесообразно. Это ограничивает возможности использования сценариев для интерактивного использования и вынуждает пользователя вводить (правильно )возможно длинное имя пути, не имея возможности использовать имена переменных, такие как $HOME
или $project_dir
(, или любые другие переменные, которые любит пользователь. использовать )и не использовать ~
.
Вместо этого возьмите путь к целевому каталогу из командной строки, подтвердите, что это каталог, и клонируйте в него репозитории Git, если они еще не существуют.
#!/bin/sh
destdir=$1
if [ ! -d "$destdir" ]; then
printf 'No such directory: %s\n' "$destdir" >&2
exit 1
fi
for repo in toolkit sms boggle cairo
do
if [ -e "$destdir/$repo" ]; then
printf 'Name %s already exists for repository %s (skipping)\n' \
"$destdir/$repo" "$repo" >&2
continue
fi
printf 'Cloning %s\n' "$repo"
git clone "git@github.com:cca/$repo.git" "$destdir/$repo"
done
Этот сценарий будет использоваться как
./script.sh "$HOME/projects/stuff"
и может запускаться без взаимодействия с пользователем, например, из. Ансибль или Крон.