मैं एक ऐसी स्क्रिप्ट बनाना चाहता था जो मेरे सभी गिटहब भंडारों को अपडेट करेगी।मेरा गिट ऑटो-अपडेट क्यों स्क्रिप्ट काम की अपेक्षा नहीं करता है?
मुझे बस अपना उपयोगकर्ता नाम और मेरा पासवर्ड दर्ज करना होगा, और स्क्रिप्ट रिपॉजिटरीज़ की एक सूची के माध्यम से जाएगी, git push
पर कॉल करें और पूरक अपेक्षा स्क्रिप्ट के माध्यम से आवश्यक जानकारी प्रदान करें।
#! /bin/bash
echo "Updating GitHub projects from project_list.txt."
echo
read -p "GitHub username: " un
read -p "GitHub password: " -s pw
echo
echo
while read line
do
eval dir=$line
echo "Updating:" $dir"."
cd $dir
$SF/githubexpect $un $pw
echo
echo
done < $SF/project_list.txt
$SF
एक वैश्विक वातावरण चर कि मेरी स्क्रिप्ट फ़ोल्डर में एक निरपेक्ष पथ है:
यह मेरी पार्टी स्क्रिप्ट है।
#! /usr/bin/expect
set un [lindex $argv 0]
set pw [lindex $argv 1]
spawn git push
expect "Username"
send $un\n
expect "Password"
send $pw\n
जब मैं bash स्क्रिप्ट चलाने, चीज़ें अपेक्षित ढंग से जाना:
यहाँ githubexpect स्क्रिप्ट है।
- मुझे जानकारी के लिए संकेत दिया गया है।
- स्क्रिप्ट सफलतापूर्वक शुरू होती है और
project_list.txt
फ़ाइल पढ़ने जारी रखती है। - एक बार जब यह खुद को रिपोजिटरी की निर्देशिका में पाता है, तो यह githubexpect स्क्रिप्ट और सही ढंग से जानकारी पर गुजरता है (मैंने इसका परीक्षण किया है)।
- githubexpect सही ढंग से
git push
spawns। - यह इनपुट के लिए संकेत दिया जाता है (मैंने इसे कंसोल में देखा)।
- यह मेरी जानकारी प्रदान करता है (फिर से, मैंने यह भी देखा)।
- फिर यह कुछ भी हुआ जैसे अगली रिपोजिटरी पर जारी है। < - त्रुटि!
मैं शक कर रहा हूँ कि githubexpect स्क्रिप्ट खुद को उत्पन्न करने वाला हो सकता है git push
रिश्तेदार, और न निर्देशिका वर्तमान स्क्रिप्ट में क्रियान्वित किया जा रहा है, इसलिए Git भी भंडार नहीं मिल रहा है। यह शायद गलत है हालांकि मेरे स्क्रिप्ट फ़ोल्डर के रूप में, जिसमें githubexpect रहता है, एक भंडार भी है।
यह अब काम करता है! क्या आप यह समझाने में मस्तिष्क करेंगे कि कार्यक्रम पूरा होने पर 'eof' क्यों वापस आते हैं? धन्यवाद। – corazza
यह एक उत्कृष्ट SO प्रश्न की तरह लगता है :) – jarodeells
यह आवश्यक नहीं है कि कार्यक्रम ईओएफ लौटाए: स्पॉन्डेड प्रोग्राम निकलता है, और उस स्थिति के लिए कीवर्ड "eof" का उपयोग करने की अपेक्षा होती है। –