पर पैरामीटर के रूप में संसाधित करें मेरे पास कुछ गंदा काम है, इसलिए एक बैश स्क्रिप्ट एक अच्छी पसंद प्रतीत होती है। मैं बैश के लिए नया हूं, और अनुभव मुझे निराशाजनक बनाता है।बैश: फ़ाइल लाइन-बाय-लाइन पढ़ें और प्रत्येक सेगमेंट को अन्य प्रोग्रा
फ़ाइल mapfiles.txt में निम्नानुसार रेखाएं शामिल हैं। प्रत्येक पंक्ति में एक सफेद स्थान से अलग चार सेगमेंट होते हैं। प्रत्येक सेगमेंट बाहरी प्रोग्राम नाम 'प्रोग' में इनपुट पैरामीटर का प्रतिनिधित्व करता है। उदाहरण के लिए, "cm19_1.png" फ़ाइल नाम, "0001" सूचकांक, "121,422,481" देशांतर, और "31,035,995" अक्षांश है।
फ़ाइल: mapfiles.txt
cm19_1.png 0001 121422481 31035995
cm19_2.png 0002 121423224 31035995
cm19_3.png 0003 121423967 31035995
…
मैं प्रत्येक पंक्ति के समान आदेश पर अमल करना चाहते हैं। जैसा कि नीचे दिखाया गया है, प्रोग के इनपुट पैरामीटर ऑर्डर थोड़ा अलग है। तो बार-बार काम को संभालने के लिए एक बैश स्क्रिप्ट लिखना समझ में आता है।
[Usage] prog <index> <longitude> <latitude> <filename>
example: prog 0001 121422481 31035995 cm19_1.png
आम तौर पर, बैश स्क्रिप्ट इस तरह से काम करेगा: खंडों
- पढ़ें एक mapfiles.txt
- स्प्लिट से लाइन
- कॉल एक सही पैरामीटर आदेश के साथ prog
यहां run.sh.
#!/bin/sh
input=mapfiles.txt
cmd=prog
while read line
do
file=$(echo $line | cut -d' ' -f1)
key=$(echo $line | cut -d' ' -f2)
log=$(echo $line | cut -d' ' -f3)
lat=$(echo $line | cut -d' ' -f4)
echo $cmd $key $log $lat $file
done < "$input"
मैं क्या उम्मीद
prog 0001 121422481 31035995 cm19_1.png
prog 0002 121423224 31035995 cm19_2.png
prog 0003 121423967 31035995 cm19_3.png
…
है वास्तविक परिणाम मुझे मिल गया
cm19_1.png21422481 31035995
cm19_2.png21423224 31035995
cm19_3.png21423967 31035995
समस्याएं है कि मुझे उलझन में है
- जहाँ 'prog' है?
- सफेद जगह कहां है?
- पैरामीटर आदेश में क्या गलत है?
हम्म ... मैंने इस मैक को अपने मैक पर विम का उपयोग करके लिखा और इसे एक वैज्ञानिक लिनक्स बॉक्स और एक gentoo बॉक्स में कॉपी किया। इन तीनों लोगों को एक ही हास्यास्पद आउटपुट मिलता है।
यहाँ प्रतिलिपि प्रस्तुत करने योग्य नहीं है। टाइपो के लिए देखो। इसके अलावा, सभी कटों के बजाय बस 'फ़ाइल कुंजी लॉग लैट' पढ़ें। * यूपीडी * जवाब देखें। –
लूप में एसएसएच के साथ संयुक्त होने पर, इस प्रश्न पर एक नज़र डालें: http://stackoverflow.com/questions/9393038/ssh-breaks-out-of-while-loop-in-bash – Christian