#!/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
Yukarıdaki kod, git repository'den Emacs'i yüklemek için stackoverflow üzerinde bulduğum bir komut dosyasından düzenlediğim bir şeydir. Bu betiğin yapmasını istediğim, git reposlarından herhangi bir program yüklemek ve güncelleme gerektiğinde bunları güncellemektir. Elbette onu kurmak için gereken adımları vermem gerekecek. Bu betiğin durumunda, clientside
dizinini /usr/share/gedit/plugins/
dizinine kopyalamanız yeterlidir.Git deposunun güncel olup olmadığını kontrol eden bir kabuk komut dosyası nasıl yazılır?
Herhangi bir komut dosyasının nasıl yükleneceği konusunda yardıma ihtiyacım yok, ancak ihtiyacım olan şey, deponun güncel olup olmadığını nasıl kontrol edip oradan nasıl gidileceğini kontrol etmektir. Ben terminalde git pull 1>&1 | grep "Already up-to-date." && $?
çalıştırdığınızda
git pull 1>&1 | grep "Already up-to-date."
if [[ ! $? -eq 0 && ! $init ]]; then
.....
fi
çıkış Already up-to-date. 0
geçerli:
Şu anda anlamadığım şu bu parçasıdır. Bu yüzden, bunun güncellemeleri kontrol eden bölüm olduğunu anlıyorum, ancak bir sonraki kısımda (if deyimi) - dizini gedit eklenti dizinine kopyalayan bölüm. 1>$1
'un ne anlama geldiğini veya $?
'un ne anlama geldiğini anlamıyorum. Bu yüzden ben sorunu çözemedim ... Ve ben anlamadım neden o zaman güncel değil (o zamanif deyiminde 0
dönmez olduğunu söylüyor varsayarak olduğunu düşünüyor).
Bunun basit bir çözümü olduğuna eminim ve cevap hem bash hem git için eğitilecek. Tüm yardımı takdir ediyorum.
ubuntu 12.04 kullanıyorum.
'1> & 1' tuhaf, hiçbir fikrim yok; stdout'u stdout'a yönlendirir. Genellikle stderr (2) 'yi stdout (1)' e yönlendiren '2> & 1' formunda görürsünüz. '$?' son çıkış kodudur; 'grep' bir şeyle eşleşirse '0', eşleşmezse (veya olmayan bir dosyaya erişme gibi başka bir hatayla karşılaşırsa) '0 'olmaz. – Amadan
Yani '1> & 1' nin tamamen anlamsız olduğunu tahmin ediyorum ... eğer orada olsaydı ya da olmasaydı bir fark yaratmazdı. – Logan