2016-03-27 31 views
1

Merhaba csh kabuk komut dosyası için yeni ve can sıkıcı bir sorun ile ilgili yardıma ihtiyacım var. Aşağıdaki kodu atın:Csh echo foreach döngü dizini

set s = ("one" "two" "three" "four") 
    foreach i (${s}) 
     echo $i"-" [what do I put here to get the index?] 
    end 

Bu

one- 
    two- 
    three- 
    four- 

Ancak bir çıkışı sağlayan, ben de çok döngü sayacı endeksi yazdırmak istiyorum, bu yüzden:

bu takdirde
one-1 
    two-2 
    three-3 
    four-4 

Maalesef soru gerçekten basit ama kabuk betiklerinde çok fazla tecrübem yok (yalnız csh olsun) ve forumlar ve diğer yığın-taşırma mesajları fazla yardımcı olmadı.

cevap

1

Sen elle artırmak ayrı bir değişken kullanın gerekir: Bu bir yana

set s = ("one" "two" "three" "four") 
set i = 0 
foreach v ($s) 
    echo "$v - $i" 
    @ i = $i + 1 

    # Also works 
    #@ i++ 
end 

Sen aritmetik yapabilirsiniz özel @ komutu (@ ve i arasındaki boşluğu kullanmaktır zorunlu komut ve "sözdizimi" değil, aslında sadece aritmetik değil, herhangi bir ifade kullanabilirsiniz.

i ("yineleme" için), bunun için standart adın sıralandığından, "değer" için $i değerini $v olarak yeniden adlandırdım.

Son bir not olarak, önlenebilirse, komut dosyası için csh'u kullanmak istemezsiniz. Birçok problem ve sınırlamaya sahiptir.