{# .. #} aralıklı döngü için bas


17

{# .. #}, Python'daki range () öğesine benzer bir dizi veya karakter dizisi oluşturur. echo {1..5}Komut satırında komutu çalıştırırsam :

1 2 3 4 5

Bunun yerine aşağıdaki bash betiği beklendiği gibi çalışmıyor.

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

yazdıracak:

Iteration {1..3}

Neden?
* Kullanabilirdim seqama onun eski olduğunu okudum ( http://www.cyberciti.biz/faq/bash-for-loop/ )


Komut dosyası "sh" komutu tarafından yürütülürse bu hata oluşur ("bash" kullanmayı deneyin).
Shake0

Yanıtlar:


22

Kodunuzu denedim (kopyayı bir terminale yapıştırın) ve yayınladığınızdan farklı bir sonuç üretti:

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

Bas sürüm 4.2.10 (1) -release ile Linux Mint 12 Lisa (Ubuntu'dan türetilmiş ) kullanıyorum


2
Haklısın! Ben sh ve bash aynı şey olduğunu düşündüm ..
Shake0

1
hayır, bash ve sh oldukça farklıdır ... bash sh'den daha yeteneklidir, her ikisi de iyi bir uyumluluk derecesine sahip olsa da, sh omuzlarında yapılmıştır :) ayrıca farklılıkları da vardır
zipizap

{{i..j}, {l..m}} için var gibi iç içe listeler yapabileceğinizi unutmayın; 1 2 3 7 8 9
kahverengi

Bazı dağıtımlarda /bin/shIS'nin bash'a işaret ettiğini, Debian ve Ubuntu'da /bin/dashgenellikle POSIX uyumlu olduğunu, ancak Bash ile aynı sözdizimini desteklemediğini unutmayın.
dragon788
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.