লুপের জন্য কীভাবে লিখবেন যা প্রতিটি পুনরাবৃত্তিতে একটি অ্যাসিনক্রোনাস কমান্ড চালায়?


23

আমি ভাবছি কেন একটি লুপের মধ্যে অ্যাসিক্রোনাস কমান্ড ব্যবহার করে ত্রুটি হয়েছে?

$ for i in {1..8}; do sleep 100 & ; done
bash: syntax error near unexpected token `;'

আমি যদি এটি লিখি

$ for i in {1..8}; do 
> sleep 100 & 
> done

এই কাজ করে।

আমি কীভাবে ত্রুটি ছাড়াই এটি একটি লাইনে লিখতে পারি?

উত্তর:


39

বাদ দিন ;:

for i in {1..8}; do sleep 100 & done

&কমান্ডগুলি পৃথক করে , সুতরাং এটি ;বহিরাগত (এবং শেলটি এর মধ্যে &এবং এর মধ্য দিয়ে কিছু প্রত্যাশা করে ;)।


ধন্যবাদ। "শেলটি & এবং;" এর মধ্যে কোনও কিছুর প্রত্যাশা করে;
টিম

5
আসল কোন অপ-কমান্ডটি হ'ল:
HTNW

1
@ স্টেফেনকিট, আপনি যে বিভাগটি উল্লেখ করেছেন তাতে আরও বলা হয়েছে: "একটি ইন্টারেক্টিভ সেশন বা অন্যান্য কমান্ডের সাথে স্ক্রিপ্টে অতিরিক্ত <নিউ নিউলাইন> বা <সেমিকোলন> অক্ষর ... এখানে বর্ণিত খালি কমান্ড হিসাবে যোগ্যতা অর্জন করবে না কারণ তারা অন্যদের দ্বারা গ্রাস করা হবে" ব্যাকরণ অংশ। " হুম ...
ওয়াইল্ডকার্ড

1
@ উইল্ডকার্ড এটি আকর্ষণীয়, টিমের অনুসরণ অনুসরণের উত্তর অনুসন্ধান করার সময় আমি এই বাক্যটির পরিণতিগুলি ভেবে দেখিনি। বাশের পসিক্স মোড সক্ষম করা এই ক্ষেত্রে তার আচরণ পরিবর্তন করে না। হুম আসলেই ...
স্টিফেন কিট

2
@ উইল্ডকার্ড: echo foo ; ; echo bar৪.৪ ব্যাশে বলেছেন syntax error near unexpected token `;'dashএকটি অনুরূপ ত্রুটি দেয়। এই ক্ষেত্রে, এটি একটি খালি কমান্ড কারণ ব্যাকরণের অন্য কোনও অংশ এটি গ্রহণ করে না। আমি মনে করি তারা হয়ত (নিউলাইন) ;লাইনের শেষে অপ্রয়োজনীয় কথা বলছে sleep 100;
পিটার কর্ডস

22

আপনার doক্রিয়াগুলি কোঁকড়া বন্ধনীতে গ্রুপ করুন :

for i in {1..8}; do { sleep 100 & }; done

আপনার পাশাপাশি বাশের পক্ষেও বোঝা সহজ!

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