Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> बाश प्रोग्रामिंग

शेल स्क्रिप्टिंग में हेरेडोक का उपयोग कैसे करें

यहाँ दस्तावेज़ (Heredoc ) एक इनपुट या फ़ाइल स्ट्रीम शाब्दिक है जिसे कोड के एक विशेष ब्लॉक के रूप में माना जाता है। कोड के इस ब्लॉक को प्रोसेसिंग के लिए कमांड को पास किया जाएगा। हेरेडोक UNIX . में उत्पन्न होता है गोले और लोकप्रिय लिनक्स गोले जैसे sh, tcsh, ksh, bash, zsh, csh में पाए जा सकते हैं। विशेष रूप से, अन्य प्रोग्रामिंग भाषाएं जैसे पर्ल, रूबी, पीएचपी भी हेरेडोक का समर्थन करती हैं।

हर्डोक की संरचना

हेरेडोक 2 कोण कोष्ठक का उपयोग करता है (<<) उसके बाद सीमांकक टोकन . कोड के ब्लॉक को समाप्त करने के लिए समान सीमांकक टोकन का उपयोग किया जाएगा। जो कुछ भी सीमांकक के भीतर आता है उसे कोड का ब्लॉक माना जाता है।

नीचे दिए गए उदाहरण को देखें। मैं कोड के ब्लॉक को कैट कमांड पर रीडायरेक्ट कर रहा हूं। यहां सीमांकक "ब्लॉक करें . पर सेट है ” और उसी “ब्लॉक . द्वारा समाप्त किया गया ".

cat << BLOCK
	Hello world
	Today date is $(date +%F)
	My home directory = ${HOME}
BLOCK

नोट :ब्लॉक को शुरू करने और ब्लॉक को समाप्त करने के लिए आपको उसी सीमांकक टोकन का उपयोग करना चाहिए।

मल्टीलाइन टिप्पणियां बनाएं

यदि आप अभी बैश में कोडिंग कर रहे हैं, तो आप जान सकते हैं कि डिफ़ॉल्ट रूप से बैश मल्टीलाइन टिप्पणियों का समर्थन नहीं करता है, जैसे C या जावा . आप यहां डॉक . का उपयोग कर सकते हैं इस पर काबू पाने के लिए।

यह बहु-पंक्ति टिप्पणी का समर्थन करने वाले बैश की एक अंतर्निहित विशेषता नहीं है, बल्कि सिर्फ एक हैक है। यदि आप heredoc . को पुनर्निर्देशित नहीं कर रहे हैं किसी भी कमांड के लिए, दुभाषिया केवल कोड के ब्लॉक को पढ़ेगा और कुछ भी निष्पादित नहीं करेगा।

<< COMMENT
	This is comment line 1
	This is comment line 2
	This is comment line 3
COMMENT
शेल स्क्रिप्टिंग में हेरेडोक का उपयोग कैसे करें

सफेद जगहों को संभालना

डिफ़ॉल्ट रूप से, heredoc किसी भी व्हाइट स्पेस कैरेक्टर (टैब, स्पेस) को नहीं दबाएगा। हम dash (-) . जोड़कर इस व्यवहार को ओवरराइड कर सकते हैं (<<) . के बाद उसके बाद एक सीमांकक। यह सभी टैब स्पेस को दबा देगा लेकिन व्हाइट स्पेस को दबाया नहीं जाएगा।

cat <<- BLOCK
This line has no whitespace.
  This line has 2 white spaces at the beginning.
    This line has a single tab.
        This line has 2 tabs.
            This line has 3 tabs.
BLOCK
शेल स्क्रिप्टिंग में हेरेडोक का उपयोग कैसे करें

वेरिएबल और कमांड सबस्टेशन

हेरेडोक परिवर्तनीय प्रतिस्थापन स्वीकार करता है। चर उपयोगकर्ता-परिभाषित चर या पर्यावरण चर हो सकते हैं।

TODAY=$(date +%F)
	
cat << BLOCK1
# User defined variables
Today date is = ${TODAY}
#Environ Variables
I am running as = ${USER}
My home dir is = ${HOME}
I am using ${SHELL} as my shell
BLOCK1

इसी तरह, आप heredoc . के अंदर कोई भी आदेश चला सकते हैं कोड ब्लॉक।

cat << BLOCK2
$(uname -a) 
BLOCK2
शेल स्क्रिप्टिंग में हेरेडोक का उपयोग कैसे करें शेल स्क्रिप्टिंग में हेरेडोक का उपयोग कैसे करें

विशेष वर्णों से बचना

ऐसे कई तरीके हैं जिनसे हम विशेष पात्रों से बच सकते हैं। या तो आप इसे चरित्र स्तर या डॉक्टर स्तर पर कर सकते हैं।

अलग-अलग विशेष वर्णों से बचने के लिए बैकस्लैश (\) . का उपयोग करें ।

cat << BLOCK4
$(uname -a)
BLOCK4

cat << BLOCK5
Today date is = ${TODAY}
BLOCK5

ब्लॉक के अंदर सभी विशेष वर्णों से बचने के लिए, डिलीमीटर को सिंगल कोट्स, डबल कोट्स, या प्रीफिक्स डिलीमीटर के साथ बैकस्लैश के साथ घेरें।

cat << 'BLOCK1'
I am running as = ${USER}
BLOCK1

cat << "BLOCK2"
I am running as = ${USER}
BLOCK2

cat << \BLOCK3
I am running as = ${USER}
BLOCK3
शेल स्क्रिप्टिंग में हेरेडोक का उपयोग कैसे करें

अब जबकि हम heredoc . की संरचना जानते हैं और यह कैसे काम करता है, आइए कुछ उदाहरण देखें। दो सामान्य क्षेत्र जहां मैं heredoc . का उपयोग करता हूं SSH पर कमांड का एक ब्लॉक चला रहे हैं और heredoc . के माध्यम से SQL क्वेरी पास कर रहे हैं ।

नीचे दिए गए उदाहरण में, हम SSH के माध्यम से एक दूरस्थ सर्वर में कोड के एक ब्लॉक को निष्पादित करने का प्रयास कर रहे हैं।

शेल स्क्रिप्टिंग में हेरेडोक का उपयोग कैसे करें

नीचे दिए गए उदाहरण में मैं चयन passing पास कर रहा हूं psql . को बयान डेटाबेस से कनेक्ट करने और क्वेरी चलाने के लिए। psql . में क्वेरी चलाने का यह एक वैकल्पिक तरीका है -f . का उपयोग करने के बजाय बैश स्क्रिप्ट के अंदर चलाने के लिए ध्वज .sql फ़ाइल।

#!/usr/bin/env bash

UNAME=postgres
DBNAME=testing

psql --username=${UNAME} --password --dbname=${DBNAME} << BLOCK
SELECT * FROM COUNTRIES
WHERE region_id = 4;
BLOCK
शेल स्क्रिप्टिंग में हेरेडोक का उपयोग कैसे करें

इस लेख के लिए बस इतना ही। heredoc . के साथ आप और भी बहुत कुछ कर सकते हैं हमने उदाहरणों में जो दिखाया है उसकी तुलना में। यदि आपके पास heredoc . के साथ कोई उपयोगी हैक है कृपया इसे टिप्पणी अनुभाग में पोस्ट करें ताकि हमारे पाठक इससे लाभान्वित हो सकें।


  1. विंडोज 10 [ट्यूटोरियल] पर बैश (लिनक्स शेल) को कैसे स्थापित और उपयोग करें

    यहां बताया गया है कि विंडोज़ पर लिनक्स शेल को कैसे सेट अप करें और उसका उपयोग कैसे करें - लिनक्स के लिए विंडोज सबसिस्टम का उपयोग करके (WSL )। यह ट्यूटोरियल 2020 से विंडोज 10 के अप-टू-डेट वर्जन के लिए है। मैं विंडोज 10 के पुराने संस्करणों या विंडोज 8/7/XP/3.1 के अन्य तरीकों पर WSL का उपयोग करने के त

  1. किसी ऐप को ब्लॉक करने के लिए Google परिवार लिंक का उपयोग कैसे करें?

    विकसित हो रही तकनीक और बदलते रुझानों के बीच, इसे बनाए रखना काफी कठिन है। घर में बच्चों के साथ माता-पिता को अतिरिक्त सावधानी बरतने की जरूरत है। टेक्नोलॉजी लगातार आगे बढ़ रही है और इसके साथ-साथ हमारी लाइफस्टाइल भी बदल रही है। स्मार्टफोन के प्रचलन और ऐप्स की प्रचुरता के साथ, बच्चे की गतिविधियों पर नज़र

  1. Windows 10 में SSH सुरक्षित शेल का उपयोग कैसे करें?

    यदि आप डेटा साझा करने के लिए अपने कंप्यूटर को दूरस्थ डेस्कटॉप या किसी नेटवर्क से कनेक्ट करना चाहते हैं, तो एक सुरक्षित शेल की आवश्यकता होती है। इस ब्लॉग में हम सीखेंगे कि विंडोज 10 में एसएसएच सिक्योर शेल का उपयोग कैसे करें। एसएसएच सिक्योर शेल को इंटरनेट सहित डिवाइस और किसी भी नेटवर्क के बीच संचार की