Pageferry
वर्कफ़्लो

Bash script चलाएं: फ़ोल्डर खोलने से exit code तक

03
Script चलाएं

WSL या SSH पर तर्कों (arguments) के साथ Bash script चलाएं

एक Bash script तीन तरीकों से शुरू किया जा सकता है: bash script.sh arg1 arg2, ./script.sh (chmod +x के बाद), जो shebang लाइन की वजह से काम करता है, या exec builtin के माध्यम से, जो shell को बदल देता है और कभी वापस नहीं आता। पहला रूप शुरू करने के लिए सबसे आसान है, क्योंकि इसे permission बदलने की आवश्यकता नहीं है। Shell उस वातावरण में कमांड चलाता है जिसे आपने चुना है, जो आपके PC पर WSL है या SSH के माध्यम से जुड़े आपके Linux सिस्टम पर है, और चैट में कार्ड असली आउटपुट और exit code दिखाता है। आप तर्क तय करते हैं, इसलिए आप एक ही कनवर्सेशन में सामान्य मामले और फेल होने वाले मामले को टेस्ट कर सकते हैं। लोग अक्सर पूछते हैं कि कौन सा रूप चुनें: टेस्टिंग के दौरान bash script.sh का उपयोग करें, क्योंकि यह तब भी काम करता है जब फ़ाइल में execute permission नहीं है, और script को अंतिम रूप देने के बाद ./script.sh पर स्विच करें जब script shebang लाइन के साथ शुरू हो। आप जो भी रूप उपयोग करते हैं, exit status वही नंबर होता है, 0 से 255 तक, और 0 हमेशा इसका संकेत देता है कि script सफलतापूर्वक समाप्त हो गया।

01

फ़ोल्डर खोलें

अपने script वाले फ़ोल्डर को working folder के रूप में चुनें; read_file और grep जैसे file tools उसी के अंदर काम करते हैं। file tools उसी फ़ोल्डर में काम करते हैं, जबकि Shell, web और SSH उसमें सीमित नहीं हैं।

02

approval मोड चुनें

हर बदलाव को diff के रूप में देखने के लिए Ask first का उपयोग करें, या पहले एक योजना पढ़ने के लिए Plan only का उपयोग करें। Auto-run तुरंत कार्य करता है। Ask first केवल उन एक्शन्स से पहले रुकता है जो कुछ बदलते हैं।

03

चलाने का अनुरोध करें

साधारण शब्दों में run का वर्णन करें, उदाहरण के लिए: script को test तर्क के साथ चलाएं। यदि आपके पास दोनों हैं, तो WSL या अपने सर्वर का नाम बताएं। script और उसके तर्कों का नाम सटीक रूप से बताएं।

04

परिणाम पढ़ें

आउटपुट और असली exit code देखने के लिए कार्ड खोलें, फिर किसी भी edit को स्वीकार या अस्वीकार करें। एक गैर-शून्य नंबर जानकारी है। किसी भी स्वीकृत edit के बाद इसे फिर से चलाएं। इसे उस परिणाम से तुलना करें जिसकी आप उम्मीद कर रहे थे।

एक छोटा उदाहरण script

greet.sh
#!/usr/bin/env bash
# greet.sh - print a greeting a few times
set -eu
if [ "$#" -lt 1 ]; then
  echo "Usage: $0 NAME [COUNT]" >&2
  exit 2
fi
name="$1"
count="${2:-1}"
for i in $(seq 1 "$count"); do
  echo "Hello, $name ($i)"
done
exit 0

greet.sh नाम गायब होने पर usage लाइन और exit code 2 के साथ रुक जाता है, एक वैकल्पिक count लेता है जिसका डिफ़ॉल्ट 1 है, और लूप में केवल ग्रीटिंग्स प्रिंट करता है। इसे चलाने से पहले एक बार पढ़ें: इसमें sudo, डाउनलोड और कुछ भी नहीं है जो फ़ाइल को हटाता या ले जाता है, इसलिए यह आपके किसी भी मशीन पर टेस्ट करने के लिए हानिरहित है। लाइन-दर-लाइन: shebang interpreter का नाम बताता है, set -eu त्रुटियों और unset वेरिएबल्स पर रुक जाता है, $# की जांच तर्कों की गिनती करती है, और for लूप केवल echo करता है।

चार छोटे चरणों में script चलाएं

script फ़ाइल बनाएं

एक खाली working folder से शुरू करें। एजेंट से ऊपर दिए गए उदाहरण को लिखने के लिए कहें, और write_file उस फ़ोल्डर में greet.sh बनाता है। कार्ड खोलें और फ़ाइल को लाइन-दर-लाइन पढ़ें: पहली लाइन shebang है जो interpreter का नाम बताती है, set -eu script को त्रुटियों और unset वेरिएबल्स पर रोकता है, और $# की जांच नाम की कमी से बाकी को बचाती है। Ask first के तहत नई फ़ाइल आपके OK का इंतज़ार करती है। अभी तक कुछ भी नहीं चला है। इस script का usage ब्रेंच गलत उपयोग के लिए 2 चुनता है, जो एक सामान्य रीति है। फ़ाइल को स्वीकार करें केवल तब जब आप हर लाइन को समझते हैं, और यदि नहीं, तो एजेंट से उसे समझाने के लिए कहें। एक अस्वीकृत edit फ़ोल्डर को अपरिवर्तित छोड़ देता है।

इसे चलाएं और exit code पढ़ें

जो लोग “bash execute script” खोजते हैं, वे आमतौर पर एक लाइन चाहते हैं: bash greet.sh test। एजेंट से इसे चलाने के लिए कहें, और Shell कमांड को आपकी चैट के वातावरण में शुरू करता है, जैसे WSL, और असली आउटपुट और असली exit code भेजता है। पूरे आउटपुट के लिए कार्ड विस्तारित करें। फिर बिना तर्क के उसी run के लिए कहें, और आपको usage लाइन और exit code 2 दिखना चाहिए। cli एप्लिकेशन के लिए exit code एक नंबर होता है जो 0 से 255 तक होता है जिसे कालर पढ़ता है, और 0 सफलता का अर्थ है। exit code 127 का मतलब है कि कमांड नहीं मिला और 126 का मतलब है कि फ़ाइल को एक्जीक्यूट नहीं किया जा सकता, इसलिए ये दो नंबर टाइपो, गैर-मौजूद प्रोग्राम या गैर-मौजूद execute permission की ओर इशारा करते हैं।

script के अंदर तर्कों को पढ़ें

read_file script दिखाता है और grep ढूंढता है कि $1 और $2 कहाँ उपयोग किए जाते हैं, इसलिए आप जांच सकते हैं कि प्रत्येक तर्क का एक डिफ़ॉल्ट या error message है या नहीं। वैकल्पिक तर्कों को कैसे पार्स करें: script getopts के साथ लूप करता है, और केवल एक या दो मानों के साथ सादे $1 और ${2:-1} काफी हैं। तर्कों के साथ एलाइज फंक्शन्स की तरह व्यवहार नहीं करते हैं, क्योंकि एक एलाइज केवल टाइप किए गए शब्द को टेक्स्ट से बदल देता है, इसलिए जब मानों को मध्य में जाना हो तो फंक्शन का उपयोग करें। एजेंट से एक चीज़ बदलने के लिए कहें, उदाहरण के लिए count का डिफ़ॉल्ट, और edit_file द्वारा दिखाए गए diff को पढ़ें। फिर script को फिर से चलाएं और नए exit code को पुराने से तुलना करें। Plan only script द्वारा समझे गए पैरामीटर की सूची बना सकता है बिना कुछ भी चलाए।

अपने स्वयं के सर्वर पर उसी script को चलाएं

उसी चरण वही काम करते हैं जब working environment एक Linux सिस्टम हो जिसे आप स्वयं रखते हैं, SSH के माध्यम से जुड़ा हुआ। file tools चैट के working folder में काम करना जारी रखते हैं, जबकि Shell कमांड उस वातावरण में चलते हैं जिसे आपने चुना है, इसलिए जांचें कि कार्ड किसकी ओर संदर्भित है। exec builtin, जिसे लोग “bash exec script” के रूप में खोजते हैं, shell को एक अन्य कमांड से बदल देता है और कभी वापस नहीं आता, इसलिए इसके बाद कुछ भी नहीं चलता और exit code नए कमांड का होता है। जब script फ़ाइलों को ले जाता या हटाता है तो एक कॉपी रखें, इसे एक ड्राई रन के रूप में पहले echo के साथ चलाएं, और केवल उन मशीनों का उपयोग करें जिनका प्रशापन करने की अनुमति है। चैट बंद करने से पहले अंतिम कार्ड पढ़ें। जब आप सभी मानों को एक अन्य कमांड में भेजते हैं, तो हर मान का आकार बनाए रखने के लिए "$@" को डबल क्वोट्स में लिखें।

Windows के लिए Pageferry

अपनी मशीन पर Bash script टेस्ट करें

Pageferry डाउनलोड करें ↗