Bash Range: come eseguire l'iterazione sulle sequenze generate sulla shell

Bash Range How Iterate Over Sequences Generated Shell



Puoi iterare la sequenza di numeri in bash in due modi. Uno è usando seguito comando e un altro è specificando l'intervallo nel ciclo for. In seguito comando, la sequenza inizia da uno, il numero aumenta di uno in ogni passaggio e per impostazione predefinita stampa ogni numero in ogni riga fino al limite superiore. Se il numero inizia dal limite superiore, diminuisce di uno in ogni passaggio. Normalmente, tutti i numeri vengono interpretati come virgola mobile, ma se la sequenza inizia da un numero intero, verrà stampato l'elenco degli interi decimali. Se il comando seq può essere eseguito correttamente, restituisce 0, altrimenti restituisce qualsiasi numero diverso da zero. Puoi anche iterare la sequenza di numeri usando il ciclo for con range. Entrambi seguito comando e ciclo for con intervallo sono mostrati in questo tutorial utilizzando esempi.

Le opzioni del comando seq:

Puoi usare seguito comando utilizzando le seguenti opzioni.







-in

Questa opzione viene utilizzata per riempire i numeri con zeri iniziali per stampare tutti i numeri con larghezza uguale.



-f formato

Questa opzione viene utilizzata per stampare il numero con un formato particolare. Il numero mobile può essere formattato utilizzando %f, %ge %e come caratteri di conversione. %g è usato come predefinito.



-s stringa

Questa opzione viene utilizzata per separare i numeri con una stringa. Il valore predefinito è newline (' ').





Esempi di comando seq:

Puoi applicare il comando seq in tre modi. È possibile utilizzare solo il limite superiore o il limite superiore e inferiore o il limite superiore e inferiore con incremento o decremento del valore di ogni passo. Negli esempi seguenti sono mostrati diversi usi del comando seq con opzioni.

Esempio-1: comando seq senza opzione

Quando viene utilizzato solo il limite superiore, il numero inizierà da 1 e aumenterà di uno in ogni passaggio. Il seguente comando stamperà il numero da 1 a 4.



$seguito 4

Produzione:

Quando i due valori vengono utilizzati con il comando seq, il primo valore verrà utilizzato come numero iniziale e il secondo valore verrà utilizzato come numero finale. Il seguente comando stamperà il numero da 7 a 15.

$seguito 7 quindici

Produzione:

Quando utilizzerai tre valori con il comando seq, il secondo valore verrà utilizzato come valore di incremento o decremento per ogni passaggio. Per il comando seguente, il numero iniziale è 10, il numero finale è 1 e ogni passaggio verrà conteggiato decrementando 2.

$seguito 10 -2 1

Produzione:

Esempio 2: seq con opzione –w

Il seguente comando stamperà l'output aggiungendo lo zero iniziale per il numero da 1 a 9.

$seguito -in0110

Produzione:

Esempio 3: seq con l'opzione –s

Il comando seguente usa - come separatore per ogni numero di sequenza. La sequenza di numeri verrà stampata aggiungendo - come separatore.

$seguito -S-8

Produzione:

Esempio-4: seq con l'opzione -f

Il seguente comando stamperà 10 valori di data a partire da 1. Qui, l'opzione %g viene utilizzata per aggiungere il numero di sequenza con un altro valore di stringa.

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

produzione:

Gamma Bash

Il seguente comando viene utilizzato per generare la sequenza del numero in virgola mobile utilizzando %f . Qui, il numero inizierà da 3 e aumenterà di 0,8 in ogni passaggio e l'ultimo numero sarà minore o uguale a 6.

$seguito -F '%F' 3 0.8 6

Produzione:

Esempio-5: scrivere la sequenza in un file

Se si desidera salvare la sequenza di numeri in un file senza stamparla nella console, è possibile utilizzare i seguenti comandi. Il primo comando stamperà i numeri su un file chiamato seq.txt . Il numero genererà da 5 a 20 e aumenterà di 10 in ogni passaggio. Il secondo comando viene utilizzato per visualizzare il contenuto di seq.txt file.

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

Produzione:

Esempio 6: utilizzo di seq in for loop

Supponiamo di voler creare file denominati da fn1 a fn10 utilizzando il ciclo for con seq. Crea un file chiamato sq1.bash e aggiungi il seguente codice. Il ciclo for eseguirà un'iterazione per 10 volte utilizzando il comando seq e creerà 10 file nella sequenza fn1, fn2, fn3…..fn10.

#!/bin/bash
perioin ``seguito 10``
fare
toccofn.$i
fatto

Produzione:

Eseguire i seguenti comandi per eseguire il codice del file bash e verificare che i file siano stati creati o meno.

$bashsq1.bash
$ls

Esempi di ciclo for con intervallo:

Esempio-7: For loop con range

L'alternativa al comando seq è range. Puoi usare range in for loop per generare sequenze di numeri come seq. Scrivi il seguente codice in un file bash chiamato sq2.bash . Il ciclo itererà per 5 volte e stamperà la radice quadrata di ogni numero in ogni passaggio.

#!/bin/bash
pernin {1..5}
fare
((risultato=n*n))
buttato fuori $n quadrato=$risultato
fatto

Produzione:

Eseguire il comando per eseguire lo script del file.

$bashsq2.bash

Esempio-8: ciclo For con intervallo e valore di incremento

Per impostazione predefinita, il numero viene incrementato di uno in ogni passaggio nell'intervallo come seq. È inoltre possibile modificare il valore di incremento nell'intervallo. Scrivi il seguente codice in un file bash chiamato sq3.bash . Il ciclo for nello script itera per 5 volte, ogni passaggio viene incrementato di 2 e stampa tutti i numeri dispari compresi tra 1 e 10.

#!/bin/bash
buttato fuori 'tutti i numeri dispari da 1 a 10 sono'
perioin {1..10..2}
fare
buttato fuori $i;
fatto

Produzione:

Eseguire il comando per eseguire lo script del file.

$bashsq3.bash

Se vuoi lavorare con la sequenza di numeri, puoi utilizzare una qualsiasi delle opzioni mostrate in questo tutorial. Dopo aver completato questo tutorial, sarai in grado di utilizzare il comando seq e il ciclo for con range in modo più efficiente nel tuo script bash.