2011-02-02 24 views
29

के साथ कुछ सामग्री के साथ फाइलें बनाना मुझे कुछ फ़ाइल वाले सर्वर को कॉन्फ़िगर करने की आवश्यकता है और मैं इसे प्रोग्रामिक रूप से करना चाहता हूं।शैल स्क्रिप्ट

मैं फ़ाइलें बनाने की ज़रूरत कहना /home/a.config, /var/spool/b.config, /etc/c.config

ऊपर फ़ाइलों कुछ सामग्री (बहु लाइनों) की है।

मैं एक खोल स्क्रिप्ट बनाना चाहता हूं जो कई तीन फाइलों को कई लाइनों (लगभग 10) के साथ बना सकता है। मैं जानना चाहता हूं कि मैं ऐसा करने के लिए सीएटी कमांड का उपयोग कैसे कर सकता हूं। (खोल स्क्रिप्ट के अंदर)। इस तरह

मैं देख रहा हूँ somehting

echo " going to create /home/a.config" 

cat "HOW CAN I HAVE MULTIPLE LINES HERE?? " > /home/a.config 

धन्यवाद

उत्तर

57

आप यहां दस्तावेज़ का उपयोग कर सकते हैं।

+0

धन्यवाद में बंद कर दिया इस मैं क्या मैं – Mahes

6
तो जैसा

:

#!/bin/bash 

var="your text" 
echo "simply put, 
just so: $var" > a.config 

अधिक जानकारी के लिए, abs के इनपुट/आउटपुट भाग देखें।
आशा है, यह मदद करता है।

cat <<EOF >/home/a.config 
first line 
second line 
third line 
EOF 

आप एक ही लिपि में इनमें से कई जगह कर सकते हैं:

1
>\#!/bin/bash 
> 
>var="your text" <br> 
>echo "simply put, <br> 
>just so: $var" > a.config 

ध्यान दें कि आप भी कुछ वर्णों बाहर से बचने के लिए उन्हें आप क्या करने की कोशिश कर रहे हैं क्या के साथ हस्तक्षेप से बचने के लिए, उदाहरण के लिए $ `और की जरूरत है" सभी इस तरह का बयान टूट जाएगा जब तक कि एक बैकस्लैश के साथ, यानी \ पहले `\ $ या \"

इसलिए यदि हम निम्नलिखित को परिभाषित

:

var = "100"

निम्नलिखित व्यवहार नहीं होगा अपेक्षा के अनुरूप:

गूंज "बस रखा,
सिर्फ" उधार दे "मुझे यूएस $ $ वर"> a.config

लेकिन निम्नलिखित सही ढंग से काम करेगा :

गूंज "बस रखा,
सिर्फ \" उधार \ "मुझे अमेरिका \ $ $ वर"> a.config

4

फ़ाइल = "/ tmp/test।txt "
गूंज" पहली पंक्ति जोड़ना "> $ फ़ाइल
गूंज" पहली पंक्ति जोड़ने की जगह "> $ फ़ाइल
गूंज" दूसरी पंक्ति जोड़ ">> $ फ़ाइल
गूंज" तीसरी लाइन जोड़ ">> $ फ़ाइल
बिल्ली $ फ़ाइल

> जोड़ें/सामग्री को बदलने के लिए (यहाँ वास्तविक सामग्री 2 लाइन द्वारा बदल दिया है)
>> संलग्न करने के लिए

परिणाम
पहली पंक्ति जोड़ने की जगह
दूसरी पंक्ति में जोड़ देने
तीसरी लाइन

+0

लिए देख रहा था क्यों कोई भी आप एक अप वोट दिया है। आपका जवाब भी बहुत अच्छा है। धन्यवाद मेरे लिए काम करता है। – sarmahdi

0

आप $ 1 या अपने पाठ में $ homedir की तरह चर मिल गया है तो इन सामान्य रूप से मूल्यांकन किया जाता हो और वास्तविक मान के साथ प्रतिस्थापित किया तो जोड़। आप प्रतिस्थापित होने से इन को रोकने के लिए चाहते हैं तो आपको एकल उद्धरण 'EOF', दोहरे उद्धरण "EOF" साथ उद्घाटन सीमा स्ट्रिंग (EOF नीचे दिए गए उदाहरण में) बोली या बैकस्लैश \EOF

के साथ पूर्व में होना सीमा स्ट्रिंग बंद रहता है के रूप में की जरूरत है। EOF

यह विशेष रूप से उपयोगी है यदि आप फ़ाइल में खोल स्क्रिप्ट लिख रहे हैं।

cat << 'EOF' >/etc/rc.d/init.d/startup 
case $1 in 
    start) 
     start 
     ;; 
    stop) 
     stop 
     ;; 
    restart) 
     stop 
     start 
     ;; 
    status) 
     pid=$(tomcat_pid) 
     if [ -n "$pid" ] 
     then 
      echo "Tomcat is running with pid: $pid" 
     else 
      echo "Tomcat is not running" 
     fi 
     ;; 
esac 

EOF 

देखें उदाहरण 19.7 पैरामीटर प्रतिस्थापन Here Documents

संबंधित मुद्दे