Bash-bereik: herhalen van reeksen die op de shell zijn gegenereerd

Bash Range How Iterate Over Sequences Generated Shell



U kunt de reeks getallen in bash op twee manieren herhalen. Een daarvan is door gebruik te maken van volgende commando en een andere is door het bereik in for loop op te geven. In volgende opdracht, begint de reeks met één, wordt het nummer in elke stap met één verhoogd en wordt elk nummer in elke regel standaard afgedrukt tot aan de bovengrens. Als het getal begint bij de bovengrens, wordt het bij elke stap met één verlaagd. Normaal gesproken worden alle getallen geïnterpreteerd als drijvende komma, maar als de reeks begint met een geheel getal, wordt de lijst met decimale gehele getallen afgedrukt. Als het seq-commando met succes kan worden uitgevoerd, retourneert het 0, anders retourneert het een willekeurig getal dat niet nul is. U kunt de reeks getallen ook herhalen met for-lus met bereik. Beide volgende commando en for loop met bereik worden in deze tutorial getoond aan de hand van voorbeelden.

De opties van het seq-commando:

Je kunt gebruiken volgende commando met behulp van de volgende opties.







-in

Deze optie wordt gebruikt om de getallen met voorloopnullen op te vullen om alle getallen met dezelfde breedte af te drukken.



-f formaat

Deze optie wordt gebruikt om nummers met een bepaald formaat af te drukken. Zwevende getallen kunnen worden opgemaakt door %f, %g en %e als conversietekens te gebruiken. %g wordt standaard gebruikt.



-s tekenreeks

Deze optie wordt gebruikt om de getallen te scheiden met een string. De standaardwaarde is newline (‘ ’).





Voorbeelden van seq-opdracht:

U kunt het seq-commando op drie manieren toepassen. U kunt alleen de bovengrens of boven- en ondergrens of boven- en ondergrens gebruiken met een op- of aflopende waarde van elke stap. Verschillende toepassingen van de opdracht seq met opties worden in de volgende voorbeelden getoond.

Voorbeeld-1: seq-opdracht zonder optie

Als alleen de bovengrens wordt gebruikt, begint het getal bij 1 en wordt het bij elke stap met één verhoogd. Met de volgende opdracht wordt het nummer van 1 tot 4 afgedrukt.



$volgende 4

Uitgang:

Wanneer de twee waarden worden gebruikt met het seq-commando, wordt de eerste waarde gebruikt als startnummer en de tweede waarde als eindnummer. Met de volgende opdracht wordt het nummer van 7 tot 15 afgedrukt.

$volgende 7 vijftien

Uitgang:

Wanneer u drie waarden gebruikt met het seq-commando, wordt de tweede waarde gebruikt als op- of aflopende waarde voor elke stap. Voor de volgende opdracht is het startnummer 10, het eindnummer 1 en elke stap wordt geteld door te verlagen met 2.

$volgende 10 -2 1

Uitgang:

Voorbeeld-2: seq met –w optie

Met de volgende opdracht wordt de uitvoer afgedrukt door een voorloopnul toe te voegen voor het getal van 1 tot 9.

$volgende -in0110

Uitgang:

Voorbeeld-3: seq met –s optie

De volgende opdracht gebruikt - als scheidingsteken voor elk volgnummer. De reeks cijfers wordt afgedrukt door - als scheidingsteken toe te voegen.

$volgende -s-8

Uitgang:

Voorbeeld-4: seq met -f optie

Met de volgende opdracht worden 10 datumwaarden afgedrukt vanaf 1. Hier wordt de optie %g gebruikt om een ​​volgnummer toe te voegen aan een andere tekenreekswaarde.

$volgende -F '%g/04/2018' 10

uitgang:

Bash-bereik

De volgende opdracht wordt gebruikt om de reeks van drijvende-kommagetallen te genereren met %f . Hier begint het getal bij 3 en wordt het in elke stap met 0,8 verhoogd en het laatste getal is kleiner dan of gelijk aan 6.

$volgende -F '%F' 3 0,8 6

Uitgang:

Voorbeeld-5: Schrijf de reeks in een bestand

Als u de nummerreeks in een bestand wilt opslaan zonder in de console af te drukken, kunt u de volgende opdrachten gebruiken. De eerste opdracht drukt de nummers af naar een bestand met de naam volgende.txt . Het getal genereert 5 tot 20 en wordt bij elke stap met 10 verhoogd. Het tweede commando wordt gebruikt om de inhoud van te bekijken volgende.txt het dossier.

$ volgende 5 10 20 | kat > volgende.txt
$ cat seq.txt

Uitgang:

Voorbeeld-6: seq in for loop gebruiken

Stel dat u bestanden met de naam fn1 tot en met fn10 wilt maken met for loop met seq. Maak een bestand met de naam sq1.bash en voeg de volgende code toe. De For-lus herhaalt 10 keer met de opdracht seq en maakt 10 bestanden in de volgorde fn1, fn2,fn3…..fn10.

#!/bin/bash
voorlin ``volgende 10``
doen
aanrakenvn.$i
gedaan

Uitgang:

Voer de volgende opdrachten uit om de code van het bash-bestand uit te voeren en controleer of de bestanden zijn gemaakt of niet.

$bashsq1.bash
$ls

Voorbeelden van for-lus met bereik:

Voorbeeld-7: For-lus met bereik

Het alternatief voor het seq-commando is bereik. U kunt range in for loop gebruiken om een ​​reeks getallen zoals seq te genereren. Schrijf de volgende code in een bash-bestand met de naam sq2.bash . De lus zal 5 keer herhalen en de vierkantswortel van elk getal in elke stap afdrukken.

#!/bin/bash
voorNin {1..5}
doen
((resultaat=n*N))
gooide uit $n vierkant=$resultaat
gedaan

Uitgang:

Voer de opdracht uit om het script van het bestand uit te voeren.

$bashsq2.bash

Voorbeeld-8: For-lus met bereik en incrementwaarde

Standaard wordt het aantal met één verhoogd in elke stap in het bereik, zoals seq. U kunt ook de verhogingswaarde in het bereik wijzigen. Schrijf de volgende code in een bash-bestand met de naam sq3.bash . De for-lus in het script wordt 5 keer herhaald, elke stap wordt met 2 verhoogd en alle oneven getallen tussen 1 en 10 worden afgedrukt.

#!/bin/bash
gooide uit 'alle oneven getallen van 1 tot 10 zijn'
voorlin {1..10..2}
doen
gooide uit $i;
gedaan

Uitgang:

Voer de opdracht uit om het script van het bestand uit te voeren.

$bashsq3.bash

Als u met de getallenreeks wilt werken, kunt u een van de opties gebruiken die in deze tutorial worden getoond. Na het voltooien van deze tutorial, kun je de opdracht seq en for loop efficiënter gebruiken in je bash-script.