इसका विस्तार / मूल्यांकन किए बिना एक चर के साथ एक स्ट्रिंग प्रतिध्वनित करें [बंद]


12

मैंने हर जगह खोजा है। इको और प्रिंट की कोशिश की। सिंगल और डबल कोट्स की कोशिश की। लेकिन मैंने डेटा पार्स कर दिया है और इसे एक वेरिएबल में असाइन किया है और इसके लिए इसका मूल्यांकन करना चाहूंगा कि क्या इसके भीतर कोई वैरिएबल है या नहीं। मैं फिर एक वाइल्डकार्ड के साथ चर को बदल दूंगा और फ़ाइल को खोजूंगा।

उदाहरण:

var="file.$DATE.txt"

### Where it goes wrong-  Needs to identify that $DATE is within the $var varaible.
test=$(echo "$var"|grep '\$')
if [[ $test ]]
then
    ### I would use whatever fix is discovered here as well
    test=$(echo $test|sed 's/\$[a-zA-Z]*/\*/')
fi

### (Actually pulling from remote machine to local)
cat $test > /tmp/temporary.file

यहाँ मेरी कई विफलताओं में से एक है:

PROMPT> file=blah.$DATE
PROMPT> test=$(echo "$file"|grep '\$')
PROMPT> echo $test
PROMPT>
PROMPT>

मुझे पता है कि इसका विस्तार से कुछ लेना-देना है, लेकिन इसे अंजाम देने का कोई उपाय नहीं है। किसी भी सहायता की सराहना की जाएगी। धन्यवाद!


ऐसा क्या है जिसे आपको हल करने की आवश्यकता है? उस संस्करण में संयुक्त राष्ट्र का विस्तार है $date? उस उपयोग के लिए var='file.$DATE.txt':। जब संस्करण का उपयोग किया जाता है तो तारीख का विस्तार करने के लिए? मुझे यकीन है कि आपको यह बताने की ज़रूरत है कि आप क्या पूछ रहे हैं।

क्षमा करें, परीक्षण करने के लिए कि क्या एक चर "चर" चर के भीतर परिभाषित किया गया है। तरह-तरह का घोंसला।
krmarshall87

मुझे अपनी दुविधा के चारों ओर एक ऐसी चीज मिली जिसे तुरंत एक चर प्रतीत होता है (बिना पहले ध्यान दिए) कि मुझे वाइल्डकार्ड से स्वैप करना है: sed 's/\${*[a-zA-Z0-9_%]*}*/\*/'
krmarshall87

जवाबों:


21

यदि आपको $dateचर संस्करण के अंदर की जरूरत है:

var='file.$date.txt'

कि चर के अंदर $ रखेंगे:

$ echo "$var" | grep '\$'
file.$date.txt

8

शेल विस्तार को रोकने के लिए चर के आसपास एकल उद्धरण का उपयोग करें। उदाहरण echo '$file'का विस्तार नहीं होगा $file

नीचे टिप्पणी के बाद संपादित करें:

आप चर के साथ $साइन इन से बच सकते हैं ।varvar="file.\$DATE.txt"


मुझे इसका विस्तार करने की आवश्यकता है, लेकिन केवल एक स्तर। चरण-दर-चरण वांछित परिणाम जोड़ना भूल गया। लेकिन मैं चाहूंगा कि $ फ़ाइल की सामग्री का मूल्यांकन एक डॉलर चिह्न ($ DATE) के लिए किया जाए।
kmmarshall87

जिसे हल करने का संपादन किया।
मुनिर

मुझे वह डेटा किसी बाहरी स्रोत से प्राप्त होता है। यहां तक ​​कि $ को एक $ के साथ बदलने के लिए, मुझे लगता है, एक गूंज की आवश्यकता होगी। अब, अगर मैं इसे पार्स कर रहा हूँ तो मुझे यह देखने दो कि मैं इसे निचोड़ सकता हूँ।
krmarshall87
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.