实现:一个用来 pull 代码的 shell 脚本

最近每次在 github 拉代码,都需要手动输一遍,有点麻烦。刚好看了一下 shell 脚本是怎么写的。
用 sh 写了一下命令。https://github.com/laputaz/get-code

效果其实特别简单,主要就是为了练习练习 shell 脚本的写法。

实现

  1. 建立文件夹

首先会提示,请输入文件夹名称。当文件夹名字是空的时候,继续提示。

1
2
3
4
5
# 建立文件夹
read -p '请输入文件夹名称:' -a FLODER
while [ -z $FLODER ]; do
read -p '名称为空, 请重新输入:' -a FLODER
done
  1. 判断文件夹是不是已存在。
    如果选是,提示是否删除重建;
    否则退出。
1
2
3
4
5
6
7
8
9
10
# 文件夹已存在
if [ -d $FLODER ]; then
read -p "文件夹已存在, 是否删除文件夹并重建?(y/n)" -n 1
echo ''
if [[ $REPLY =~ ^[Yy]$ ]]; then
rm -rf $FLODER
else
exit
fi
fi
  1. 定义一个新建文件夹并进入文件夹的函数。进入后创建一个 README.md 文件。
1
2
3
4
5
6
# 新建文件夹
newDir() {
mkdir $FLODER
cd $FLODER
touch README.md
}
  1. 执行新建并进入文件夹。
1
newDir
  1. 提示输入仓库地址,如果为空, 或者格式不对(以 ssh/http 开头),提示重新输入。
1
2
3
4
5
6
7
8
# 仓库地址 http/ssh
read -p '请输入仓库地址:' -a URL
while [ -z $URL ]; do
read -p '地址为空, 请重新输入:' -a URL
done
while [[ ! $URL =~ ^(http)|(ssh)$ ]]; do
read -p '地址格式不正确, 请重新输入:' -a URL
done
  1. 提示输入仓库别名。默认是 origin。
1
2
3
4
5
6
# 仓库别名
read -p '请输入远程仓库别名 (默认为 origin):' -a NAME
if [ -z $NAME ]; then
NAME='origin'
fi

  1. 提示输入分支名。
1
2
3
4
5
# 分支名
read -p '请输入分支名 (默认为 master) :' -a BRANCH
if [ -z $BRANCH ]; then
BRANCH='master'
fi
  1. 最后执行 git 命令,切到对应分支,并提交。
1
2
3
4
5
6
7
8
# pull
git init
git remote add $NAME $URL
git checkout -b $BRANCH
git pull $NAME $BRANCH
git add .
git commit -m "add README.md"
git push $NAME $BRANCH

效果