Rozsah basov: Ako iterovať sekvencie generované v shelle

Bash Range How Iterate Over Sequences Generated Shell



Sekvenciu čísel v bashe môžete iterovať dvoma spôsobmi. Jedným je použitie nasl príkaz a ďalší je zadaním rozsahu v slučke for. V nasl príkaz, sekvencia začína od jedného, ​​počet sa v každom kroku zvyšuje o jeden a predvolene sa vytlačí každé číslo v každom riadku až po hornú hranicu. Ak číslo začína od hornej hranice, potom sa v každom kroku znižuje o jeden. Normálne sa všetky čísla interpretujú ako plávajúca desatinná čiarka, ale ak sekvencia začína od celého čísla, vytlačí sa zoznam desatinných celých čísel. Ak sa príkaz seq môže úspešne vykonať, potom vráti 0, v opačnom prípade vráti akékoľvek nenulové číslo. Môžete tiež iterovať postupnosť čísel pomocou cyklu for s rozsahom. Obaja nasl príkaz a pre slučku s rozsahom sú v tomto návode znázornené pomocou príkladov.

Možnosti príkazu seq:

Môžeš použiť nasl príkaz pomocou nasledujúcich možností.







-v

Táto možnosť sa používa na vloženie čísel s úvodnými nulami na vytlačenie všetkých čísel s rovnakou šírkou.



-f formát

Táto možnosť sa používa na tlač čísel v konkrétnom formáte. Plávajúce číslo je možné formátovať pomocou znakov %f, %g a %e ako konverzných znakov. Predvolene sa používa %g.



-s reťazec

Táto možnosť sa používa na oddelenie čísel reťazcom. Predvolená hodnota je nový riadok („ n“).





Príklady príkazu seq:

Príkaz seq môžete použiť tromi spôsobmi. Môžete použiť iba hornú hranicu alebo hornú a dolnú hranicu alebo hornú a dolnú hranicu s prírastkom alebo znížením hodnoty každého kroku. Rôzne použitia príkazu seq s možnosťami sú uvedené v nasledujúcich príkladoch.

Príklad-1: seq príkaz bez možnosti

Keď sa použije iba horná hranica, číslo začne od 1 a v každom kroku sa zvýši o jednu. Nasledujúci príkaz vytlačí číslo od 1 do 4.



$nasl 4

Výkon:

Keď sú dve hodnoty použité s príkazom seq, potom prvá hodnota bude použitá ako počiatočné číslo a druhá hodnota bude použitá ako koncové číslo. Nasledujúci príkaz vytlačí číslo od 7 do 15.

$nasl 7 pätnásť

Výkon:

Keď použijete tri hodnoty s príkazom seq, potom bude druhá hodnota použitá ako hodnota prírastku alebo zníženia pre každý krok. Pre nasledujúci príkaz je počiatočné číslo 10, koncové číslo 1 a každý krok sa bude počítať znížením 2.

$nasl 10 -2 1

Výkon:

Príklad 2: nasledujúce s možnosťou –w

Nasledujúci príkaz vytlačí výstup pridaním úvodnej nuly k číslu od 1 do 9.

$nasl -v0110

Výkon:

Príklad 3: nasledujúce s možnosťou –s

Nasledujúci príkaz používa - ako oddeľovač pre každé poradové číslo. Poradie čísel sa vytlačí pridaním - ako oddeľovača.

$nasl -s-8

Výkon:

Príklad -4: nasledujúce s možnosťou -f

Nasledujúci príkaz vytlačí 10 hodnôt dátumu počnúc od 1. Tu sa na pridanie poradového čísla s inou hodnotou reťazca použije možnosť %g.

$nasl -f '%g/04/2018' 10

výkon:

Bash Range

Nasledujúci príkaz sa používa na generovanie postupnosti čísla s pohyblivou rádovou čiarkou pomocou %f. Tu bude číslo začínať od 3 a zvyšovať o 0,8 v každom kroku a posledné číslo bude menšie alebo rovné 6.

$nasl -f '%f' 3 0,8 6

Výkon:

Príklad-5: Napíšte postupnosť do súboru

Ak chcete uložiť postupnosť čísel do súboru bez tlače v konzole, môžete použiť nasledujúce príkazy. Prvý príkaz vytlačí čísla do súboru s názvom seq.txt . Číslo sa vygeneruje od 5 do 20 a v každom kroku sa zvýši o 10. Druhý príkaz sa používa na zobrazenie obsahu seq.txt súbor.

nasledujúcich 5 10 10 20 | mačka> seq.txt
$ cat seq.txt

Výkon:

Príklad-6: Použitie cyklu seq in for

Predpokladajme, že chcete vytvárať súbory s názvom fn1 až fn10 pomocou slučky for so seq. Vytvorte súbor s názvom sq1.bash a pridajte nasledujúci kód. For loop bude 10 krát iterovať pomocou príkazu seq a vytvorí 10 súborov v sekvencii fn1, fn2, fn3… ..fn10.

#!/bin/bash
preiv nasl 10
urobiť
dotýkať safn.$ i
hotový

Výkon:

Spustite nasledujúce príkazy na spustenie kódu súboru bash a skontrolujte, či sú súbory vytvorené alebo nie.

$bashsq1.bash
$ls

Príklady slučky for s rozsahom:

Príklad 7: Pre slučku s rozsahom

Alternatívou príkazu seq je range. Cyklus range in for môžete použiť na generovanie postupnosti čísel, ako sú nasledujúce. Napíšte nasledujúci kód do súboru bash s názvom sq2.bash . Smyčka sa bude opakovať 5 krát a v každom kroku vytlačí druhú odmocninu každého čísla.

#!/bin/bash
prenv {1..5}
urobiť
((výsledok= n*n))
zahodil $ n námestie=$ výsledok
hotový

Výkon:

Spustite príkaz na spustenie skriptu súboru.

$bashsq2.bash

Príklad 8: Pre slučku s hodnotou rozsahu a prírastku

Štandardne sa číslo v každom kroku zvyšuje o jeden v rozsahu ako nasledujúce. Môžete tiež zmeniť hodnotu prírastku v rozsahu. Napíšte nasledujúci kód do súboru bash s názvom sq3.bash . Smyčka for v skripte sa bude opakovať 5 krát, každý krok sa zvýši o 2 a vytlačí všetky nepárne čísla od 1 do 10.

#!/bin/bash
zahodil „všetky nepárne čísla od 1 do 10 sú“
preiv {1..10..2}
urobiť
zahodil $ i;
hotový

Výkon:

Spustite príkaz na spustenie skriptu súboru.

$bashsq3.bash

Ak chcete pracovať s postupnosťou čísel, môžete použiť ktorúkoľvek z možností uvedených v tomto návode. Po dokončení tohto tutoriálu budete môcť vo svojom bash skripte efektívnejšie používať príkaz seq a for loop with range.