मैं (वास्तव में) कार्यात्मक प्रोग्रामिंग के लिए नौसिखिया (वास्तव में केवल अजगर के साथ इसका संपर्क था) लेकिन एक शेल वातावरण में कुछ सूची-गहन कार्यों के लिए एक अच्छा दृष्टिकोण प्रतीत होता है।
मुझे ऐसा कुछ करना अच्छा लगेगा:
$ [ git clone $host/$repo for repo in repo1 repo2 repo3 ]
क्या इस तरह की सुविधा के साथ कोई यूनिक्स शेल है? या हो सकता है कि कुछ सुविधा आसान शेल एक्सेस (कमांड, एनवी / वर्स, रीडलाइन आदि ...) से अजगर के भीतर जाने की अनुमति देती है (यह विचार है कि अजगर को इंटरएक्टिव इंटरप्रेटर का उपयोग बैश में बदलने के लिए किया जाता है)।
संपादित करें:
शायद एक तुलनात्मक उदाहरण स्पष्ट होगा। मान लीजिए कि मेरे पास dir / file से बनी एक सूची है :
$ FILES=( build/project.rpm build/project.src.rpm )
और मैं वास्तव में एक सरल कार्य करना चाहता हूं: सभी फाइलों को कॉपी करें / इसे सिस्टम में स्थापित करें (यह एक बिल्ड प्रक्रिया का हिस्सा है):
बैश का उपयोग करना:
$ cp $ {फाइलें [*]} dist / $ cd dist && rpm -Uvh $ (f में $ {फाइलें [*]} के लिए, क्या $ f? किया है?);
"पायथोनिक शेल" दृष्टिकोण का उपयोग करना (सावधानी: यह काल्पनिक कोड है):
$ cp [os.path.join ('dist', os.path.basename (फ़ाइल)) FILES में फ़ाइल के लिए] 'dist'
क्या आप अंतर देख सकते हैं ? कि मैं किस बारे में बात कर रहा हूँ इस तरह के सामान के निर्माण के साथ एक खोल को बाहर कैसे नहीं किया जा सकता है? शेल में सूचियों को संभालना एक वास्तविक दर्द है, यहां तक कि इसका इतना सामान्य कार्य है: फाइलों की सूची, पीआईडी की सूची, सब कुछ की सूची।
और वास्तव में, वास्तव में, महत्वपूर्ण बिंदु: वाक्यविन्यास / उपकरण / सुविधाओं का उपयोग करना हर कोई पहले से जानता है: श और अजगर।
IPython सीम अच्छी दिशा में है, लेकिन यह फूला हुआ है: यदि var नाम '$' से शुरू होता है, तो यह ऐसा करता है, यदि '$$' ऐसा करता है। यह सिंटैक्स "प्राकृतिक" नहीं है, इतने सारे नियम और "वर्कअराउंड" ( [ ln.upper() for ln in !ls ]
-> सिंटैक्स त्रुटि)