2016-03-22 5 views
4

Ich möchte die Sequenz in for-Schleife begrenzen. Alle meine Versuche waren unangebracht. Was mache ich falsch?Wie für Schleife mit begrenzender Reihenfolge in Fischschale Iterieren

Ich dachte, dass dies funktionieren sollte:

for x in ((seq 100)[50..55]) 
    echo $x 
end 
+1

Was ist Ihre Wunschauswahl? 50 bis 55? 'für ((i = 50; i <= 55; i ++)); echo "$ i"; done' – Cyrus

+0

@Cyrus Ich denke, das wird in Bash nicht in Fischschale funktionieren. –

+0

Sie können dies versuchen, 'für x in {50..55}; echo $ x; fertig. –

Antwort

8

Mit Fisch:

for i in (seq 50 55); echo "$i"; end 

Ausgang:

 
50 
51 
52 
53 
54 
55 
+0

danke. Hast du es in der Fischgruppendokumentation gefunden? –

+0

Ich fand 'help seq' und http://Stackoverflow.com/a/20875348/3776858 – Cyrus

+0

Sie werden es dort nicht finden, weil' seq' kein Fischding ist - es ist ein externes Werkzeug (siehe 'type seq') . Auf GNU/Linux Systemen ist es ein Teil von GNU Coreutils. – faho

4

Sie haben ein zu viele Paare von Klammern. In Fisch Klammern tun, was $(command) und `command` tun in bash oder zsh. So tun nur

for x in (seq 100)[50..55] 
    echo $x 
end 

Und, natürlich, für dieses spezielle Beispiel, das Sie nicht einmal die Scheibe Notation müssen, da Sie nur den seq Befehl sagen kann beginnen und mit den gewünschten Werten zu beenden.