2012-02-05 13 views
6

मैं एक पाठ फ़ाइल कैसे पढ़ सकते हैं और पार्टी में एक चर में सहेज सकते हैं? मेरी कोड यहाँ है:बैश में एक चर में एक पाठ फ़ाइल को बचाने

#!/bin/bash 
TEXT="dummy" 
echo "Please, enter your project name" 
read PROJECT_NAME 
mkdir $PROJECT_NAME 
cp -r -f /home/reza/Templates/Template\ Project/* $PROJECT_NAME 
cd $PROJECT_NAME/Latest 
TEXT = `cat configure.ac ` ## problem is here !!! 
CHANGED_TEXT=${TEXT//ProjectName/$PROJECT_NAME} 
echo $CHANGED_TEXT 
+0

के संभावित डुप्लिकेट [एक फ़ाइल को पढ़ने और खोल स्क्रिप्ट का उपयोग कर चर में सहेजें] (http://stackoverflow.com/questions/7427262/read-a-file-and-save-it-in-variable-using- शेल-स्क्रिप्ट) –

उत्तर

14

मुद्दा आप एक अतिरिक्त स्थान होता है। असाइनमेंट को = ऑपरेटर के बीच शून्य रिक्त स्थान की आवश्यकता होती है। हालांकि, bash साथ आप का उपयोग कर सकते हैं:

TEXT=$(<configure.ac) 

तुम भी सुनिश्चित करें कि आप नई-पंक्तियों

CHANGED_TEXT="${TEXT//ProjectName/$PROJECT_NAME}" 
echo "$CHANGED_TEXT" 
+0

यह काम करता है लेकिन इसमें कोई समस्या है: रेखाएं गायब हैं। सभी पात्रों [1] [http://paste.kde.org/200162/) जैसे कि मुझे क्या करना चाहिए? – reza

+1

@reza क्या आपने अपने चर का उद्धरण दिया जैसा मैंने उल्लेख किया था? – SiegeX

3

TEXT=`cat configure.ac` 

यही काम करना चाहिए की कोशिश करो।

संपादित करें:

स्पष्ट करने के लिए, अंतर अंतर में है: के बाद TEXT कारणों बैश एक अंतरिक्ष डाल एक कमांड के रूप में यह देखने के लिए प्रयास करने के लिए।

1

की रक्षा के लिए एक कमांड निष्पादित और सेव लिए बैश लिपि में परिणाम वापस जाने के लिए अपने चर बोली बनाने के लिए चाहता हूँ एक चर में, उदाहरण के लिए, आपको कमांड को var = $ (कमांड) में लिखना होगा। और आपको var, '=' और $() के बीच रिक्त स्थान नहीं देना चाहिए। इस

TEXT=$('cat configure.ac') 

को देखो अब, फ़ाइल configure.ac द्वारा सामग्री वापस echo $TEXT

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