Neden herhangi bir metin için; dört kez döngü?


9

Bu bir hata veya özellik mi? Sıralanmamış alfanümerikler
için olduğu görülüyor .

GNU bash'ı çalıştırma, sürüm 4.1.5

for alpha01234; do echo $((++i)); done

çıktı:

1
2
3
4

Yanıtlar:


14

Bu, forbileşik komutun bir özelliğidir help for:

for: for NAME [in WORDS ... ] ; do COMMANDS; done

Listedeki her üye için komutları yürütün.

forDöngü öğeleri listesindeki her üyesi için bir komut dizisi yürütür. Eğer in WORDS ...;mevcut değilse, o in "$@"zaman varsayılır. İçindeki her öğe için WORDS, NAMEo öğeye ayarlanır ve COMMANDSyürütülür.

Dolayısıyla, alıntıladığınız kod muhtemelen 4 parametre ile çağrılan bir kodda yürütülür.


Teşekkürler ... Beni tamamen fırlatan şey komut satırında olmasıydı .. Aslında bir senaryoda denemedim .. set a b c dSon zamanlarda bir süre kullanmalıydım. Sık sık settest için bir senaryoda bu şekilde kullanıyorum . Terminali yeniden başlattıktan sonra durdu ... (şimdi mantıklı) ..
Peter.O

12

for x; do …kısayoludur for x in "$@"; do …: konumsal parametreler üzerinde yineleme yapar. O dört kez döngüler halinde, bu (dört konumsal parametreler var demektir $1aracılığıyla $4).

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.