मैं अपने लिए नई परियोजनाओं को स्थापित करने के लिए स्वचालित रूप से एक स्क्रिप्ट लिख रहा हूं।गिट कमांड से आउटपुट कैप्चर करें?
इसमें एक गिथब रिपोजिटरी खींचना शामिल है।
मुझे क्या करना चाहते हैं, मेरी स्क्रिप्ट से कुछ उत्पादन तो फोन git clone $repo
मैं जबकि यह चल रहा है आदेश से उत्पादन दिखाना चाहते हैं, लेकिन तब जब यह करता है, तो समाप्त हो गया है यह सफलतापूर्वक चला की जगह है यह आउटपुट (केवल गिट कमांड आउटपुट को नोट करें, मैं अभी भी आउटपुट चाहता हूं कि वहां से पहले) repository successfully cloned
के साथ और यदि विफल हो तो वहां आउटपुट छोड़ दें, और repository cloning failed
प्रिंट करें।
मैं यह कैसे कर सकता हूं?
नीचे मेरी वर्तमान (बल्कि सरल) स्क्रिप्ट है।
#! /bin/bash
# -p project name
templateurl="[email protected]:xxx/xxx-site-template.git"
while getopts ":p:" opt; do #eventually I'll add more options here
case $opt in
p)
project=$OPTARG
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
if [ -z "$project" ]; then
echo "Project name required"
exit 1
fi
clear
echo "|==========================|"
echo "| New xxx Project Creator |"
echo "|==========================|"
echo "Project: $project"
if [ -d "$project" ]; then
echo "Directory $project already exists!"
exit 1
fi
mkdir $project
if [ ! -d "$project" ]; then
echo "Failed to create project directory!"
exit 1
fi
echo "Cloning xxx Template repository"
git clone $templateurl $project
मैंने स्क्रिप्ट के निचले भाग को 'गिट क्लोन $ टेम्पलेट $ 1 प्रोजेक्ट --quiet सफलता = $ होने के लिए बदल दिया है? अगर [[सफलता -eq 0]]; फिर गूंज "रिपोजिटरी सफलतापूर्वक क्लोन किया गया।" fi' लेकिन मुझे त्रुटि मिल रही है '[[: अगर कथन के साथ लाइन पर नहीं मिला'। भी, मुझे लगता है कि मेरा प्रश्न थोड़ा गलत है, मैं अभी भी सामान्य आउटपुट प्रदर्शित करना चाहता हूं क्योंकि कमांड चल रहा है ताकि उपयोगकर्ता को क्या हो रहा है पर कुछ फीडबैक प्राप्त हो। लेकिन कमांड समाप्त हो जाने के बाद मैं उस आउटपुट को दूर करना चाहता हूं। – Hailwood
अगर कथन में $ लापता है: '[[$ सफलता ...;' यदि आप पहले से मुद्रित आउटपुट को हटाना चाहते हैं तो आपको कैरिज रिटर्न (\ r) से निपटना होगा और फिर पुराने आउटपुट को ओवरराइट करना होगा। मुझे लगता है कि पहले से मुद्रित आउटपुट हटाना संभव नहीं है। – sge
एक और संभावना एएनएसआई-एस्केप-कोड का उपयोग करेगा http://ascii-table.com/ansi-escape-sequences.php। उदाहरण के लिए 'echo -e "\ 033 [2K" 'सक्रिय रेखा को हटा देता है।कर्सर की स्थिति को सेट करने और लाइनों को हटाने का संयोजन सफलता का कारण बन सकता है। – sge