((…)) {…; For এর জন্য একটি বৈধ শেল সিনট্যাক্স? কোন শাঁসে?


21

এক্সপ্রেশন:

$ ksh -c 'for ((i=0;i<10;i++)){ echo $i;}'
0
1
2
3
4

সঠিকভাবে কাজ করে।

আমি এই বাক্য গঠনটির বিবরণ খুঁজে পেতে ব্যর্থ হই যেখানে ম্যানুয়ালটিতে {...;}প্রতিস্থাপন করছে ; do ...; done

ম্যানুয়ালটিতে কি রেফারেন্স আছে? কোন শাঁসের জন্য এটি সঠিকভাবে কাজ করে?


উত্তর:


30

{ ...; }ইতিমধ্যে স্থানে গৃহীত হয় do ...; doneযে forদেরী 70s মধ্যে ইউনিক্স V7 মধ্যে বোর্ন শেল প্রথম সংস্করণে লুপ (দেখুন সোর্স কোড ) যদিও আমি জানি যতদূর নথিভুক্ত না।

সকলেই ksh(বোর্ন শেল থেকে প্রাপ্ত মূল দুটি এবং ksh93 পুনর্লিখন), pdksh¹ (এবং ডেরিভেটিভস), bash(1989 সালের প্রথম থেকে) এবং zshএটিকে সমর্থন করে। আমি জানি না ashযে কোনও ডেরাইভেটিভ যা করে। yashহয় না তবে yashPOSIX স্ট্যান্ডার্ড লিখিত ছিল।

ইন zsh, ১৯৯১ সালে ২.০ সহ সমর্থন যোগ করা হয়েছিল, তবে বেশিরভাগ নির্মাণের জন্য সংক্ষিপ্ত আকারগুলির একটি নতুন পরিসরের অংশ হিসাবে যা বোর্ন সিনট্যাক্সের বাইরে চলে যায়। এটি কেবল নয় for i in 1 2; { ...; }, এটি for i in 1 2; any-command(এবং এর রূপগুলি)। এবং এটা নথিভুক্ত করা আছে এবং তার ভূমিকা যেহেতু হয়েছে

zshআফাইক , পাশের , কেবল পিডিক্স এটি নথি করে (উভয় forএবং উভয়ের জন্য select)।

হিসাবে ((init; condition; action))ফর্ম, যে থেকে আসে ksh93এবং দ্বারা কপি করা হয়েছে zshএবং bash

সেগুলি ((...))বা তার { ...; }জায়গায় do ...; doneকোনওটিই পসিক্স নয়।

আরও দেখুন লুপগুলির জন্য বাশে "কর" কীওয়ার্ডটির উদ্দেশ্য কী? আরও forলুপ ফর্ম জন্য।


Earlier পূর্ববর্তী সংস্করণগুলি নয়, না ফোর্সিথ শেল যা এটি ভিত্তিক। এটি 1994 সালে 5.1.1 এ যুক্ত হয়েছিল এবং এটি সম্ভবত এটি কেন নথিভুক্ত হয়েছে তা ব্যাখ্যা করে


1
বাহ, মিঃ বোর্ন 70০ এর দশকের উত্স কোডটিতে সি প্রিপ্রোসেসরটির ব্যবহার পুরোপুরি গ্রহণ করেছিলেন।
ডিজিটাল ট্রমা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.