यहाँ दस्तावेज़
हमने अपने पाठ को आउटपुट करने के दो अलग-अलग तरीकों पर गौर किया है, दोनों का उपयोग करते हुए गूंज कॉम
एक तीसरा तरीका है जिसे 'मन्द' कहा जाता है। यहाँ दस्तावेज़ or यहाँ स्क्रिप्ट. यहाँ दस्तावेज़ I/O पुनर्निर्देशन का एक अतिरिक्त रूप है जिसमें हम अपनी स्क्रिप्ट में पाठ का एक मुख्य भाग एम्बेड करते हैं और इसे कमांड के मानक इनपुट में फीड करते हैं। यह इस तरह काम करता है:
आदेश << टोकन
टेक्स्ट
टोकन
जहां आदेश कमांड का नाम है जो मानक इनपुट स्वीकार करता है और टोकन एक स्ट्रिंग है जिसका उपयोग एम्बेडेड टेक्स्ट के अंत को इंगित करने के लिए किया जाता है। हम अपनी स्क्रिप्ट को यहाँ एक दस्तावेज़ का उपयोग करने के लिए संशोधित करेंगे:
#! / Bin / bash
# सिस्टम सूचना पृष्ठ को आउटपुट करने का प्रोग्राम
शीर्षक='$HOSTNAME के लिए सिस्टम सूचना रिपोर्ट' CURRENT_TIME=$(दिनांक +'%x %r %Z')
TIMESTAMP='$USER द्वारा $CURRENT_TIME जेनरेट किया गया'
बिल्ली << _EOF_
$शीर्षक
$शीर्षक
$टाइमस्टैम्प
_ईओएफ_
#! / Bin / bash
# सिस्टम सूचना पृष्ठ को आउटपुट करने का प्रोग्राम
शीर्षक='$HOSTNAME के लिए सिस्टम सूचना रिपोर्ट' CURRENT_TIME=$(दिनांक +'%x %r %Z')
TIMESTAMP='$USER द्वारा $CURRENT_TIME जेनरेट किया गया'
बिल्ली << _EOF_
$शीर्षक
$शीर्षक
$टाइमस्टैम्प
_ईओएफ_
के बजाय का उपयोग करने का गूंज, हमारी स्क्रिप्ट अब उपयोग करती है बिल्ली और यहाँ एक दस्तावेज़ है। स्ट्रिंग _ईओएफ_ (जिसका अर्थ है “फ़ाइल का अंत,” एक सामान्य परंपरा) को टोकन के रूप में चुना गया था, और यह एम्बेडेड टेक्स्ट के अंत को चिह्नित करता है। ध्यान दें कि टोकन अकेले दिखाई देना चाहिए और लाइन पर अंतिम स्थान नहीं होना चाहिए।
तो यहाँ दस्तावेज़ का उपयोग करने का क्या लाभ है? यह अधिकतर वैसा ही है गूंज, सिवाय इसके कि, डिफ़ॉल्ट रूप से, इन दस्तावेज़ों के भीतर एकल और दोहरे उद्धरण शेल के लिए अपना विशेष अर्थ खो देते हैं। यहाँ एक कमांड लाइन उदाहरण है:
[मुझे@लिनक्सबॉक्स ~]$ foo="कुछ पाठ"
[मुझे@लिनक्सबॉक्स ~]$ बिल्ली << _EOF_
> $फू
[मुझे@लिनक्सबॉक्स ~]$ foo="कुछ पाठ"
[मुझे@लिनक्सबॉक्स ~]$ बिल्ली << _EOF_
> $फू
> "$फू"
> '$फू'
> \$फू
> _ईओएफ_ कुछ पाठ "कुछ पाठ" 'कुछ पाठ'
$फू
> "$फू"
> '$फू'
> \$फू
> _ईओएफ_ कुछ पाठ "कुछ पाठ" 'कुछ पाठ'
$फू
जैसा कि हम देख सकते हैं, शेल उद्धरण चिह्नों पर ध्यान नहीं देता है। यह उन्हें सामान्य वर्णों के रूप में मानता है। यह हमें किसी दस्तावेज़ में उद्धरण चिह्नों को स्वतंत्र रूप से एम्बेड करने की अनुमति देता है। यह हमारे रिपोर्ट प्रोग्राम के लिए उपयोगी साबित हो सकता है।
यहाँ दस्तावेज़ों का उपयोग किसी भी कमांड के साथ किया जा सकता है जो मानक इनपुट स्वीकार करता है। इस उदाहरण में, हम कमांड की एक श्रृंखला को पास करने के लिए यहाँ दस्तावेज़ का उपयोग करते हैं FTP दूरस्थ FTP सर्वर से फ़ाइल प्राप्त करने के लिए प्रोग्राम:
#! / Bin / bash
# FTP के माध्यम से फ़ाइल प्राप्त करने के लिए स्क्रिप्ट FTP_SERVER=ftp.nl.debian.org
FTP_PATH=/debian/dists/lenny/main/installer-i386/current/images/cdrom REMOTE_FILE=debian-cd_info.tar.gz
ftp -n << _EOF_ $FTP_SERVER खोलें
उपयोगकर्ता अनाम me@linuxbox cd $FTP_PATH
हैश
$REMOTE_FILE प्राप्त करें अलविदा
_ईओएफ_
ls -l $रिमोट_फ़ाइल
#! / Bin / bash
# FTP के माध्यम से फ़ाइल प्राप्त करने के लिए स्क्रिप्ट FTP_SERVER=ftp.nl.debian.org
FTP_PATH=/debian/dists/lenny/main/installer-i386/current/images/cdrom REMOTE_FILE=debian-cd_info.tar.gz
ftp -n << _EOF_ $FTP_SERVER खोलें
उपयोगकर्ता अनाम me@linuxbox cd $FTP_PATH
हैश
$REMOTE_FILE प्राप्त करें अलविदा
_ईओएफ_
ls -l $रिमोट_फ़ाइल
यदि हम पुनर्निर्देशन ऑपरेटर को “<<” से “<<-” में बदलते हैं, तो शेल यहाँ दस्तावेज़ में अग्रणी टैब वर्णों को अनदेखा कर देगा। यह यहाँ दस्तावेज़ को इंडेंट करने की अनुमति देता है, जिससे पठनीयता में सुधार हो सकता है:
#! / Bin / bash
# FTP के माध्यम से फ़ाइल प्राप्त करने के लिए स्क्रिप्ट FTP_SERVER=ftp.nl.debian.org
#! / Bin / bash
# FTP के माध्यम से फ़ाइल प्राप्त करने के लिए स्क्रिप्ट FTP_SERVER=ftp.nl.debian.org
FTP_PATH=/debian/dists/lenny/main/installer-i386/current/images/cdrom REMOTE_FILE=debian-cd_info.tar.gz
ftp -n <<- _EOF_ $FTP_SERVER खोलें
उपयोगकर्ता अनाम me@linuxbox cd $FTP_PATH
हैश
$REMOTE_FILE प्राप्त करें अलविदा
_ईओएफ_
ls -l $रिमोट_फ़ाइल
FTP_PATH=/debian/dists/lenny/main/installer-i386/current/images/cdrom REMOTE_FILE=debian-cd_info.tar.gz
ftp -n <<- _EOF_ $FTP_SERVER खोलें
उपयोगकर्ता अनाम me@linuxbox cd $FTP_PATH
हैश
$REMOTE_FILE प्राप्त करें अलविदा
_ईओएफ_
ls -l $रिमोट_फ़ाइल