#!/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
उपर्युक्त कोड कुछ ऐसा है जो मैंने स्क्रिप्ट से संपादित किया है जिसे मैंने स्टैक ओवरफ्लो पर पाया है ताकि गिट रिपॉजिटरी से Emacs इंस्टॉल किया जा सके। मैं यह स्क्रिप्ट करना चाहता हूं कि गिट रिपोज़ से किसी भी प्रोग्राम को इंस्टॉल करना है, और यदि अपडेट आवश्यक है तो उन्हें अपडेट करें। बेशक मुझे इसे स्थापित करने के लिए कदम प्रदान करना होगा। इस स्क्रिप्ट के मामले में इसे 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
है:
अभी मैं क्या समझ में नहीं आता इस हिस्सा है। तो मैं समझता हूं कि यह वह हिस्सा है जो अद्यतनों की जांच करता है हालांकि अगला भाग निष्पादित नहीं करता है (अगर कथन) - जो वह हिस्सा है जो निर्देशिका को जीएडिट प्लगइन निर्देशिका में कॉपी करता है। मुझे समझ में नहीं आता कि 1>$1
का अर्थ है या $?
का अर्थ क्या है। इसलिए मैं समस्या को हल नहीं कर सका ... और जो मुझे समझ में नहीं आता है, वह यह सोचता है कि Branch is moved
जब यह अद्यतित नहीं है (मुझे लगता है कि यह कहता है कि git pull
0
वापस कथन में वापस नहीं आता है)।
मुझे यकीन है कि इसका एक आसान समाधान है और उत्तर दोनों बाश और गिट के लिए शिक्षित होगा। हम आपकी मदद की सराहना करते हैं।
मैं उबंटू 12.04 का उपयोग कर रहा हूं।
'1> और 1' अजीब है, मेरे पास कोई सुराग नहीं है; यह stdout stdout को रीडायरेक्ट करता है। आप आमतौर पर इसे '2> और 1' रूप में देखते हैं, जो stderr (2) से stdout (1) को रीडायरेक्ट करता है। '$?' अंतिम निकास कोड है; यदि 'grep' कुछ मेल खाता है, तो यह' 0' होगा, अगर यह मिलान करने में विफल रहा है (या किसी अन्य त्रुटि का अनुभव किया है, जैसे गैर-मौजूद फ़ाइल तक पहुंचने में)। – Amadan
तो मुझे लगता है कि '1> और 1' पूरी तरह से व्यर्थ है ... यदि वहां था या नहीं तो इससे कोई फर्क नहीं पड़ता। – Logan