आपके लिए दो कारणों से लूप स्निपेट ने काम नहीं किया:
(($i += 5))
- यहाँ के $i
मूल्य में विस्तार किया गया है i
। इस प्रकार विस्तार कुछ ऐसा होगा ((375 += 5))
, जिसका कोई मतलब नहीं है (एक शाब्दिक संख्या को दूसरे शाब्दिक संख्या में निर्दिष्ट करने का प्रयास)। यह सामान्य रूप से प्राप्त किया जाएगा ((i += 5))
( $
चर का विस्तार करने के लिए नहीं )
{375..3500}
पाश की पहली यात्रा से पहले विस्तार किया जाएगा। यह संख्याओं की सूची होगी 375 376 ... 3499 3500
। लूप के प्रत्येक पुनरावृत्ति के लिए, i
इन नंबरों में से प्रत्येक को एक-एक करके सौंपा जाएगा। इस प्रकार प्रत्येक पुनरावृत्ति की शुरुआत में, i
उस सूची में अगले मान को फिर से असाइन किया जाएगा , 1. चरणों में गिना जाता है। ((i += 5))
प्रभावी रूप से कुछ भी नहीं करता है - यह 5 से i जोड़ता है, लेकिन फिर मैं बस फिर से शुरू में फिर से असाइन किया गया हूं अगला पुनरावृत्ति
मुझे लगता है कि मुझे for (( ; ; ))
उत्तर सबसे अच्छा लगता है , लेकिन यहां आपको सोचने के लिए कुछ विकल्प दिए गए हैं:
चूंकि हम 5 के गुणकों के साथ काम कर रहे हैं, और {a..b..i}
विस्तार bash संस्करण 3.2.57 (1) (OS X में) का समर्थन नहीं करता है, तो हम इसके बजाय यह थोड़ा रहस्यमय चीज़ कर सकते हैं:
for i in 375 {38..349}{0,5} 3500; do
echo $i
done
यह दर्शाता है कि कार्टेशियन उत्पाद बनाने के लिए बैश का उपयोग कैसे किया जा सकता है।
मुझे लगता है कि सामान्य रूप से लूप के लिए यह करने का सबसे सुविधाजनक तरीका है, लेकिन यदि आप रुचि रखते हैं, तो आप थोड़ी देर के लूप (अपने बेसिक के करीब) का उपयोग कर सकते हैं:
count=375
while (( count <= 3500 )); do
echo $count
(( count += 5 ))
done