मैं एक साधारण बैश फ़ंक्शन लिखने की कोशिश कर रहा हूं, जो इसके तर्कों, कई फाइलों और / या निर्देशिकाओं के रूप में लेता है। यह होना चाहिए:
- पूरी तरह से फ़ाइल नाम योग्य।
- उन्हें क्रमबद्ध करें।
- डुप्लिकेट निकालें।
- वास्तव में मौजूद सभी को प्रिंट करें।
- गैर-मौजूद फ़ाइलों की संख्या लौटाएँ।
मेरे पास एक स्क्रिप्ट है जो लगभग वही करता है जो मैं चाहता हूं, लेकिन छंटनी पर गिर जाता है। स्क्रिप्ट का वापसी मूल्य सही होने के साथ ही सही है, लेकिन आउटपुट (अनसोल्ड और डुप्लिकेट) नहीं है। यदि मैं | sort -u
बयान को संकेत के रूप में बता देता हूं , तो आउटपुट सही है लेकिन रिटर्न वैल्यू हमेशा है 0
।
समस्या को हल करने के लिए एनबी सिंपल समाधान स्वागत योग्य हैं लेकिन सवाल वास्तव में यह है कि मेरे पास कोड में ऐसा क्यों होता है। यही है, क्यों पाइप को जोड़ने से स्क्रिप्ट में वृद्धि को रोकने के लिए प्रतीत होता है r
?
यहाँ स्क्रिप्ट है:
function uniqfile
{
local r=0
for arg in "$@"
do
readlink -e "$arg" || (( ++r ))
done #| sort -u ## remove that comment
return $r
}
for arg in "$@"
करने के लिएfor arg
। "अगर मैं काम करता हूं ...?" मौजूद नहीं है, फिर "" $ @ "" मान लिया गया है। " - मदद के लिए