আমি (সত্যই) ফাংশনাল প্রোগ্রামিংয়ের নবাগত (বাস্তবে পাইথন ব্যবহার করে এটির সাথে কেবল যোগাযোগ ছিল) তবে শেল পরিবেশে কিছু তালিকা-নিবিড় কাজের জন্য এটি একটি ভাল পদ্ধতির বলে মনে হয়।
আমি এই জাতীয় কিছু করতে চাই:
$ [ git clone $host/$repo for repo in repo1 repo2 repo3 ]
এই জাতীয় বৈশিষ্ট্য সহ কোনও ইউনিক্স শেল রয়েছে? অথবা পাইথনের অভ্যন্তর থেকে সহজে শেল অ্যাক্সেসের (কমান্ড, এনভি / ভার্স, রিডলাইন, ইত্যাদি ...) অনুমতি দেওয়ার জন্য কিছু বৈশিষ্ট্য রয়েছে (বাশের প্রতিস্থাপন হিসাবে পাইথনের ইন্টারেক্টিভ ইন্টারপ্রেটার ব্যবহার করা ধারণা)।
সম্পাদনা করুন:
হতে পারে একটি তুলনামূলক উদাহরণ স্পষ্ট হবে। ধরা যাক আমার কাছে দির / ফাইলের সমন্বয়ে একটি তালিকা রয়েছে :
$ FILES=( build/project.rpm build/project.src.rpm )
এবং আমি সত্যিই একটি সহজ কাজটি করতে চাই: সমস্ত ফাইলকে ডিস্ট / এন্ড সিস্টেমে ইনস্টল করতে অনুলিপি করুন (এটি একটি বিল্ড প্রক্রিয়ার অংশ):
ব্যাশ ব্যবহার:
$ সিপি $ {ফাইলগুলি [*]} দ্য ডিস / d সিডি ডিস অ্যান্ড & আরপিএম-উভ $ (in {ফাইলের জন্য [*]}; বেস নাম $ চ; সম্পন্ন))
একটি "পাইথোনিক শেল" পদ্ধতির ব্যবহার (সতর্কতা: এটি কাল্পনিক কোড):
ফাইলের ফাইলের জন্য সিপি [os.path.join ('dist', os.path.basename (ফাইল))] 'ডিস্ট'
তুমি কি পার্থক্য দেখতে পাও ? এটাই আমি বলছি। বিল্ড-ইন এই ধরণের স্টাফ দিয়ে কীভাবে শেল ছাড়তে পারে না? শেলের মধ্যে তালিকাগুলি পরিচালনা করা এটি সত্যিকারের ব্যথা, এমনকি এটি খুব সাধারণ কাজ being ফাইলগুলির তালিকা, পিআইডিগুলির তালিকা, সমস্ত কিছুর তালিকা।
এবং একটি সত্যই, সত্যই, গুরুত্বপূর্ণ বিষয়: সিন্ট্যাক্স / সরঞ্জাম / বৈশিষ্ট্যগুলি প্রত্যেকেই ইতিমধ্যে জানে: শে এবং পাইথন using
আইপিথনগুলি একটি ভাল দিক হতে পারে তবে এটি ফুলে যায়: যদি বর্ণের নাম '$' দিয়ে শুরু হয়, এটি এটি করে, যদি '$$' এটি করে। এটি সিনট্যাক্সটি "প্রাকৃতিক" নয়, এতগুলি বিধি এবং "ওয়ার্কআরউন্ডস" ( [ ln.upper() for ln in !ls ]
-> সিনট্যাক্স ত্রুটি)