#!/bin/bash
#gedit tidy plugin
init=false
SRC_DIR=~/repos
DIRECTORY="Gedit-Clientside-Plugin"
#making repos directory
if [ ! -d "$SRC_DIR" ]; then mkdir $SRC_DIR; fi
if [ ! -d "$SRC_DIR/$DIRECTORY" ]; then
init=true
cd $SRC_DIR && pwd && git clone git://github.com/trentrichardson/Gedit-Clientside-Plugin.git && cd $DIRECTORY
else
cd $SRC_DIR/$DIRECTORY
fi
#below here is what I'm having trouble with
git pull 1>&1 | grep "Already up-to-date."
if [[ ! $? -eq 0 && ! $init ]]; then
read -e -p "## Branch moved, build and install Gedit-Clientside-Plugin? [Y/n] " yn
if [[ $yn == "y" || $yn == "Y" || $yn == "" ]] ; then
if [ ! -d "/usr/share/gedit/plugins/clientside" ]; then
sudo cp ~/repos/Gedit-Clientside-Plugin/clientside /usr/share/gedit/plugins/ -r
else
echo "Directory already exists."
fi
fi
fi
上面的代码是我从我在 stackoverflow 上找到的脚本编辑的,用于从 git 存储库安装 Emacs。我想要这个脚本做的是从 git repos 安装任何程序,并在需要更新时更新它们。当然,我必须提供安装它的步骤。在这个脚本的情况下,它只需要将目录复制clientside
到/usr/share/gedit/plugins/
目录。
我不需要任何关于如何安装任何脚本的帮助,但我需要的是如何检查存储库是否是最新的并从那里开始。
现在我不明白的是这部分:
git pull 1>&1 | grep "Already up-to-date."
if [[ ! $? -eq 0 && ! $init ]]; then
.....
fi
当我git pull 1>&1 | grep "Already up-to-date." && $?
在终端中运行时,输出为Already up-to-date. 0
. 所以我知道这是检查更新的部分,但是下一部分不执行(if 语句) - 这是将目录复制到 gedit 插件目录的部分。我不明白什么1>$1
意思或什么$?
意思。因此我无法解决问题......而我不明白的是为什么它认为Branch is moved
它不是最新的(我只是假设它说if 语句git pull
中没有返回0
)。
我确信它有一个简单的解决方案,答案将是对 bash 和 git 的教育。我感谢所有的帮助。
我正在使用 ubuntu 12.04。