隨著代碼越寫越多胧瓜。本地保存的git倉庫也越來越多,有些是私有項(xiàng)目跺株,有些是公開項(xiàng)目复濒。其中也有很多是訪問不多,本地做備份保存的倉庫乒省。說這么多廢話巧颈,主要是遇到一個(gè)需要把本地代碼運(yùn)行g(shù)it pull同步遠(yuǎn)端倉庫代碼。一個(gè)一個(gè)文件夾cd實(shí)在是太麻煩了袖扛。
#!/bin/bash
while getopts "Pp:" arg #選項(xiàng)后面的冒號(hào)表示該選項(xiàng)需要參數(shù)
do
case $arg in
P)
export HTTP_PROXY=http://127.0.0.1:1234
export HTTPS_PROXY=http://127.0.0.1:1234
;;
p)
# echo "a's arg:$OPTARG" #參數(shù)存在$OPTARG中
export HTTP_PROXY=$OPTARG
export HTTPS_PROXY=$OPTARG
;;
?) #當(dāng)有不認(rèn)識(shí)的選項(xiàng)的時(shí)候arg為?
echo -e '\033[31m參數(shù)列表:
-P 設(shè)置代理:HTTP_PROXY=http://127.0.0.1: 1234
HTTPS_PROXY=http://127.0.0.1: 1234
-p 指定代理砸泛,比如:-p http://127.0.0.1: 1234
\033[0m'
exit 1
;;
esac
done
shift $((OPTIND-1))
args=( "$@" )
if [ ! -n "$1" ] ;then
# 沒有指定目錄,設(shè)置為當(dāng)前目錄。
args='.'
fi
for arg in "${args[@]}"
do
if [ -n "$arg" ]; then
if [ -d "$arg" ]; then
path=$arg
else
echo -e "\033[31m'$arg'必須是目錄唇礁,可以不加參數(shù)則默認(rèn)處理當(dāng)前目錄\033[0m"
exit 1
fi
else
# path=$(dirname $0)
path=$(pwd)
fi
cd "$path" || continue
# 處理當(dāng)前頁面是否有g(shù)it
if [[ -d ./.git ]]
then
echo "pulling $(basename $path)"
git pull
fi
# 其實(shí)理論上上面當(dāng)前目錄是git倉庫了勾栗,這里是不需要再處理了。
parent_dir=$(ls .)
for dir in $parent_dir
do
if [[ -d $dir/.git ]]
then
echo "pulling $(basename $dir)"
cd "$dir" || continue
git pull
cd ..
fi
done
done