2016-03-27 16 views
1

Hallo, ich bin neu zu Shell-Skripting in Csh und ich brauche Hilfe mit einem lästigen Problem. Nehmen Sie den Code unten:Csh echo foreach Schleife Index

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

Dies ergibt die Ausgabe

one- 
    two- 
    three- 
    four- 

Allerdings würde ich auch zu aus dem Schleifenzähler Index drucken möchten, so:

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

Sorry, wenn dies Frage ist wirklich grundlegend, aber ich habe nicht viel Erfahrung in Shell-Skripting (geschweige denn Csh) und Foren und andere Stack-Überlauf-Beiträge hat nicht viel geholfen.

Antwort

1

Sie müssen eine separate Variable verwenden, die Sie manuell erhöhen:

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

    # Also works 
    #@ i++ 
end 

Sie können Arithmetik durch den speziellen @ Befehl (den Raum zwischen @ und i ist Pflicht verwenden, da diese eine ist Befehl, und nicht "Syntax", können Sie tatsächlich verwenden beliebige Ausdruck hier, nicht nur arithmetisch).

Da i (für "Iteration") ist die Art der Standard-Namen für diese, habe ich Ihre $i in $v für "Wert" umbenannt.

Als letzte Anmerkung möchten Sie wahrscheinlich nicht csh für Skripts verwenden, wenn es vermieden werden kann. Es hat viele Probleme und Einschränkungen.