লুপের জন্য আমি কীভাবে এবং (এবং&) প্রতিস্থাপন করব?


24

আমি এর সমতুল্য খুঁজে পেতে চাই

cmd 1 && cmd 2 && ... && cmd 20

কিন্তু একটি forলুপের মধ্যে প্রকাশিত আদেশগুলি দিয়ে with

for i in {1..20}
do
   cmd $i
done

প্রথমটির সমতুল্য সন্ধান করতে আপনি দ্বিতীয় প্রকাশে কী পরিবর্তন আনতে চান?

উত্তর:


54

আপনার মূল ক্রম সমতুল্য হবে:

for i in {1..20}
do
   cmd $i || break
done

অমিতের উত্তরের সাথে পার্থক্য হ'ল স্ক্রিপ্টটি প্রস্থান হবে না, অর্থাৎ সম্ভাব্য কমান্ডগুলি কার্যকর করবে যা অনুক্রম / লুপ অনুসরণ করবে। নোট করুন যে পুরো লুপের রিটার্নের স্থিতি আমার পরামর্শের সাথে সর্বদা সত্য হবে, আপনার ক্ষেত্রে প্রাসঙ্গিক হলে এটি ঠিক করা যেতে পারে।


1
সম্মত, এটি আরও ঘনিষ্ঠভাবে আচরণটির অনুসরণ করেcmd && cmd
অমিত সোনার

9

যদি আপনি একটি নোংরা এক-লাইন সমাধান চান, আপনি একটি কমান্ড তৈরি করতে এবং এটি ব্যাশে প্রেরণ করতে পারেন।

echo "cmd "{1..20}" &&" : | bash

3
আমাদের একটি আইওব্যাশসিসি ^^ তৈরি করা উচিত
অলিভিয়ার ডুলাক

8

যদি সেগুলির মধ্যে একটি ব্যর্থ হয় তবে আপনি লুপটি ভেঙে ফেলতে পারেন

for i in {1..55}; do
    if ! cmd $i; then
        exit 1
    fi
done

1
@ জিলিয়াগ্র্রে নোট করেছেন (এবং তার উত্তরটিতে একটি সংশোধন সরবরাহ করেছেন) এর মতো এটি "লুপটি ভেঙে যায় না", এটি কলিং শেল থেকে বেরিয়ে আসে।
অলিভিয়ার ডুলাক

1
breakআইনী না আছে কি? আমি নিশ্চিত যে ifবিবৃতিটি হস্তক্ষেপ করবে না ..
jpaugh

0

এভাবেই আমি টার্মিনালে ব্যবহার না করেই আমার কাজগুলি সম্পাদন করি &&

 for i in google.com yahoo.com;do ping -c1 $i;echo $i;done

আপনার অনুরূপ একটি স্ক্রিপ্টে এই কমান্ডটি রাখতে হবে

 for i in google.com yahoo.com
    do echo $i;ping -c1 $i;
  done

উভয়ই আমাকে একই আউটপুট দিচ্ছে

google.com পিং google.com (172.217.26.174) 56 (84) ডেটা বাইট। গুগল.কম থেকে by৪ বাইট (172.217.26.174): আইসিএমপি_সেক = 1 টিটিএল = 56 সময় = 259 এমএস

--- গুগল ডটকমের পিং পরিসংখ্যান --- ১ টি প্যাকেট প্রেরণ, ১ টি প্রাপ্ত, ০% প্যাকেট ক্ষতি, সময় 0 মিমি আরটিটি মিনিট / গড় / সর্বোচ্চ / এমডেভি = 259.794 / 259.794 / 259.794 / 0.000 এমএস ইয়াহু ডট কম (পিং ইয়াহু ডট কম) 98.138.253.109) 56 (84) ডেটা বাইট। ইয়াহু ডট কম থেকে by৪ বাইট (98.138.253.109): আইসিএমপি_সেক = 1 টিটিএল = 51 সময় = 398 এমএস

--- ইয়াহু ডট কম পিং পরিসংখ্যান --- ১ টি প্যাকেট সংক্রমণ, 1 টি প্রাপ্ত, 0% প্যাকেট ক্ষতি, সময় 0 মিমি আরটিটি মিনিট / গড় / সর্বোচ্চ / এমডেভ = 398.974 / 398.974 / 398.974 / 0.000 এমএস

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