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


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.