शेल स्क्रिप्ट एक फ़ाइल से मान पढ़ने के लिए और उसकी तुलना दूसरे से करें


1

मेरे पास एक सी प्रोग्राम है जो एक परीक्षण फ़ाइल के अंदर एक अद्वितीय मूल्य रखता है (यह दो अंकों की संख्या होगी)। अब मैं उस संख्या को पढ़ने के लिए एक शेल स्क्रिप्ट चलाना चाहता हूं और फिर अपनी आवश्यक संख्या (जैसे 40) से तुलना करता हूं ।

तुलना को "बराबर" या "अधिक" देना चाहिए।

उदाहरण के लिए: C प्रोग्राम के आउटपुट c.txtको वैल्यू 36 के साथ फाइल में लिखा जाता है , और मैं इसकी तुलना 40 नंबर के साथ करना चाहता हूं।

इसलिए मैं चाहता हूं कि यह तुलना "बराबर" या "अधिक" के बराबर हो और फिर "बराबर" या "अधिक" मूल्य को प्रतिध्वनित करें।


यदि आप फ़ाइल में लिखने के लिए C का उपयोग कर रहे हैं, तो क्या फ़ाइल को पढ़ने और मूल्यों की तुलना करने के लिए C का उपयोग करना जल्दी नहीं होगा?
iglvzx

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

जवाबों:


4

यह बहुत बुनियादी है, लेकिन जब तक आप अधिक निर्दिष्ट नहीं करते, मुझे नहीं पता कि और क्या जोड़ना है।

बस फ़ाइल से पहली पंक्ति पढ़ें, इसे एक चर के रूप में सहेजें, और अपनी वांछित आउटपुट प्राप्त करने के लिए सरल तुलना जैसे -gt(अधिक से अधिक) या -eq(बराबर) का उपयोग करें। आप निश्चित रूप से $valऔर $compयहाँ स्विच कर सकते हैं, जो वास्तव में आप चाहते हैं पर निर्भर करता है ।

#!/usr/bin/env bash
val=$(< c.txt)
comp=$1
if [[ "$val" -gt "$comp" ]]
  then echo "greater"
elif [[ "$val" -eq "$comp" ]]
  then echo "equal"
fi

यहां, c.txtआपकी इनपुट फ़ाइल है, और यह माना जाता है कि इसमें केवल एक पंक्ति है। आपके द्वारा तुलना किए गए मान को एक तर्क के रूप में पढ़ा जाता है, इसलिए आपको इस स्क्रिप्ट को इस रूप में कॉल करना चाहिए:

./script.sh 40

वैसे भी, मैं बहुत उन्नत बैश स्क्रिप्टिंग गाइड पढ़ने की सलाह दूंगा


2
यदि फ़ाइल में केवल एक पंक्ति है जिसमें नंबर शामिल है, तो आप लिख सकते हैं val=$(< c.txt)। यह एक बैश शॉर्टकट हैval=$(cat c.txt)
ग्लेन जैकमैन

@glennjackman धन्यवाद, यह बहुत अधिक संक्षिप्त है। मैंने इसे जवाब में जोड़ दिया।
slhck
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.