বাশে মোড অপারেটর কীভাবে ব্যবহার করবেন?


168

আমি এইভাবে একটি লাইন চেষ্টা করছি:

for i in {1..600}; do wget http://example.com/search/link $i % 5; done;

আউটপুট হিসাবে যা পাওয়ার চেষ্টা করছি তা হ'ল:

wget http://example.com/search/link0
wget http://example.com/search/link1
wget http://example.com/search/link2
wget http://example.com/search/link3
wget http://example.com/search/link4
wget http://example.com/search/link0

তবে আমি আসলে যা পাচ্ছি তা হ'ল:

    wget http://example.com/search/link

উত্তর:


234

নিম্নলিখিত চেষ্টা করুন:

 for i in {1..600}; do echo wget http://example.com/search/link$(($i % 5)); done

$(( ))সিনট্যাক্স একটি করে গাণিতিক মূল্যায়ন বিষয়বস্তুর।


4
কেউ গাণিতিক অপারেশন, নোট জন্য এই প্রয়োজন হয়, তাহলে যে ঋণাত্মক সংখ্যা সঙ্গে মডিউল অপারেশন মধ্যে bash আয় শুধুমাত্র বাকি , না গাণিতিক মডিউল ফলাফল। এর অর্থ -12 mod 10হ'ল গাণিতিক হওয়ার সময় 8, বাশ এটি হিসাবে গণনা করবে -2। আপনি এটি সাধারণ echo $((-12 % 10))( -2) দিয়ে পরীক্ষা করতে পারেন এবং এটি python3 python3 -c "print(-12 % 10)"( 8) এর সাথে তুলনা করতে পারেন ।
মজাদার

1
ভুলে যাবেন না যে গাণিতিক নির্মাণটি $(())স্বয়ংক্রিয়ভাবে ভেরিয়েবলগুলি প্রসারিত করবে যাতে আপনার $সাথে আর প্রয়োজন হয় না i। এটি $((i % 5))পুরোপুরি ভাল কাজ করবে।
ইয়োকাই


30

আপনার গাণিতিক ভাবগুলি অবশ্যই $ (()) এর মধ্যে রেখে দেওয়া উচিত।

এক রৈখিক:

for i in {1..600}; do wget http://example.com/search/link$(($i % 5)); done;

একাধিক লাইন:

for i in {1..600}; do
    wget http://example.com/search/link$(($i % 5))
done

13

এটি অফ-টপিক হতে পারে। লুপ ইন উইজেটের জন্য, আপনি অবশ্যই করতে পারেন

curl -O http://example.com/search/link[1-600]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.