रेंज {# .. #} के साथ लूप के लिए बैश


17

{# .. # # पायथन में रेंज () के समान संख्या या वर्णों का एक क्रम उत्पन्न करते हैं। यदि मेरे echo {1..5}पास कमांड लाइन में कमांड निष्पादित होता है:

1 2 3 4 5

इसके बजाय निम्नलिखित बैश स्क्रिप्ट उम्मीद के मुताबिक काम नहीं करती है।

for i in {1..3};
do
    echo "Iteration $i"
done

प्रिंट होगा:

Iteration {1..3}

क्यों?
* मैं उपयोग कर सकता था seqलेकिन मैंने इसे पढ़ा है ( http://www.cyberciti.biz/faq/bash-for-loop/ )


यह त्रुटि तब होती है जब स्क्रिप्ट को "श" कमांड द्वारा निष्पादित किया जाता है ("बैश" का उपयोग करके देखें)।
— शके ०

जवाबों:


22

मैंने आपके कोड की कोशिश की है (एक टर्मिनल में पेस्ट पेस्ट) और यह आपके द्वारा पोस्ट किए गए से एक अलग परिणाम उत्पन्न करता है:

for i in {1..3};
do
    echo "Iteration $i"
done
#---OUTPUT BELOW---
Iteration 1
Iteration 2
Iteration 3

लिनक्स टकसाल 4.2.10 (1) -release के साथ लिनक्स मिंट 12 लिसा (उबंटू से प्राप्त) का उपयोग कर


2
तुम सही हो! मुझे लगा कि श और बाश एक ही चीज हैं ..
— शके ०

1
नहीं, bash और sh काफी भिन्न हैं ... bash sh की तुलना में अधिक सक्षम है, इसे sh के कंधों पर बनाया गया था :) हालाँकि इन दोनों में अनुकूलता की एक अच्छी डिग्री है, लेकिन इसके अंतर भी हैं
— zipizap

ध्यान दें कि आप {{i_j}, {l..m}} में var के लिए नेस्टेड सूचियाँ कर सकते हैं; $ dcho करते हैं; यदि आपको अनियमित अनुक्रम की आवश्यकता है जैसे कि 1 2 3 7 8 9
— brown.2179

ध्यान दें कि कुछ डिस्ट्रोस पर /bin/shवास्तव में बैश की ओर इशारा करते हैं, डेबियन और उबंटू पर यह आमतौर पर इंगित /bin/dashकरता है कि ज्यादातर पॉसिक्स कंप्लेंट है, लेकिन बैश के समान सभी सिंटैक्स का समर्थन नहीं करता है।
— ड्रैगन 788
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.