कैसे मॉड ऑपरेटर का उपयोग कैसे करें?


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]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.