मान लीजिए मैं निम्नलिखित है स्क्रिप्ट: -बैश: सिर और पूंछ बैश स्क्रिप्ट के साथ व्यवहार
test.sh
#!/bin/bash
command1 #prints 5 lines
command2 #prints 3 lines
मैं test.sh|head -n5
साथ स्क्रिप्ट क्या इस में होगा चलाने मामला? क्या यह दोनों आदेशों को चलाएगा? या यह कमांड 1 के बाद रुक जाएगा? यदि मैं इसे -n1 के साथ कॉल करता हूं तो क्या होगा?
पृष्ठभूमि: मैं एक बहुत ही बुनियादी सवाल पूछ रहा हूं, लेकिन मैंने वास्तव में कुछ दिलचस्प देखा। मेरी स्क्रिप्ट (अलग-अलग) 7,000 फाइलों को संसाधित कर रही थी और प्रत्येक फाइल आउटपुट की 1 लाइन बनाती है। यह 7 मिनट लगते हैं स्क्रिप्ट पूरी तरह से चलते हैं, लेकिन सिर करने के लिए -n1 दिया मुझे तुरंत स्क्रिप्ट तुरंत तरह पहली फ़ाइल केवल
संपादित संसाधित करने के बाद समाप्त कर दिया है: के बाद मेरी स्क्रिप्ट है
for i in $(ls filepath);do
echo "$i" # issue here
python mySript "$i" > "/home/user/output/""$i"".out"
fi
done
को हटाकर प्रतिबिंब स्क्रिप्ट को हेड-एन 1 के साथ पूर्ण 7 मिनट चलाने में सक्षम बनाता है, लेकिन गूंज के साथ यह केवल पहली पंक्ति प्रिंट करता है और बाहर निकलता है।
यह पूरी तरह से कमांड चलाएगा और फिर आउटपुट को सीधे सिर पर पास कर देगा। ऐसा लगता है कि सब कुछ ठीक तरह से काम कर रहा है, मुझे समझ में नहीं आता कि आप क्या पूछ रहे हैं? –
यह 'echo' अंतर्निहित कमांड के बाद से बैश का व्यवहार प्रतीत होता है। 'echo' को'/bin/echo' में बदलने का प्रयास करें और देखें कि क्या खुशी है। – ymonad
@ymonad आप सही हैं, क्या आप इस व्यवहार पर और विस्तार कर सकते हैं? – RedX