जब आप कहते हैं कि आप "सही ढंग से stdin का उपयोग नहीं कर रहे हैं" तो आप सही हैं। वास्तव में, आपके द्वारा प्रदान की गई स्क्रिप्ट स्निपेट से, आपकी स्क्रिप्ट मानती है कि आप फ़ाइलों को कमांड लाइन पर तर्क के रूप में प्राप्त कर रहे हैं ... आप stdin का उपयोग नहीं कर रहे हैं!
रन शेल स्क्रिप्ट एक्शन के ऊपरी दाएं कोने में, एक्स के नीचे 2 विकल्प के साथ एक ड्रॉप डाउन बॉक्स है: 'पास इनपुट: stdin' और 'पास intput: तर्क के रूप में'। ये विकल्प निर्धारित करते हैं कि चुनी गई फाइलें आपकी स्क्रिप्ट क्रिया में कैसे पारित की जाती हैं। 'तर्क' के रूप में विकल्प चुना जाता है, तो अपनी स्क्रिप्ट निम्न टेम्पलेट
for f in "[email protected]"; do
# so stuff here
done
जब 'तर्क' के रूप में चयन किया गया है इस टेम्पलेट कार्रवाई से ही प्रदान की जाती है का उपयोग करना चाहिए।
दूसरी ओर, यदि 'stdin के लिए' विकल्प चुना जाता है, तो आप स्क्रिप्ट इस tamplate उपयोग करना चाहिए:
while read fname; do # read each line - assumes one file name per line
# do clever stuff with the filename
echo $fname # to illustrate we'll simply copy the filename to stdout
done
(घटना आप बैश पटकथा पता नहीं है में, सब कुछ # के बाद एक लाइन पर है कि स्क्रिप्ट कार्रवाई द्वारा प्रदान की टेम्पलेट सरल, एकल आदेश
cat
नहीं मेरी राय में बहुत उपयोगी है एक टिप्पणी)
नोट है।
ध्यान दें कि जब तक आप वास्तव में स्क्रिप्ट क्षेत्र में टेक्स्ट दर्ज नहीं करते हैं, तब तक 'to stdin' और 'तर्क के रूप में' के बीच बदलना स्क्रिप्ट बॉक्स की सामग्री को बदल देगा (मुझे लगता है कि यह आपकी स्क्रिप्ट की तरह दिखने का संकेत है) लेकिन एक बार जब आप कुछ दर्ज करते हैं, तो स्विचिंग अब नहीं होती है।