Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

per: forma tradizionale a conchiglia

L'originale per la sintassi del comando è:

per variabile [nel parole]; fare

comandi

fatto

Dove variabile è il nome di una variabile che aumenterà durante l'esecuzione del ciclo, parole è un elenco opzionale di elementi che verranno assegnati in sequenza a variabilee comandi sono i comandi che devono essere eseguiti ad ogni iterazione del ciclo.

I per comando è utile sulla riga di comando. Possiamo facilmente dimostrare come funziona:



[io@linuxbox~]$ per i in ABCD; fai echo $i; fatto

ABCD

[io@linuxbox~]$ per i in ABCD; fai echo $i; fatto

ABCD


In questo esempio, per viene fornito un elenco di quattro parole: "A", "B", "C" e "D". Con un elenco di quattro parole, il ciclo viene eseguito quattro volte. Ogni volta che viene eseguito il ciclo, viene assegnata una parola alla variabile i. All'interno del ciclo, abbiamo un eco comando che visualizza il valore di i per mostrare il compito. Come con il while ed fino a quando loop, il fatto la parola chiave chiude il ciclo.


La caratteristica davvero potente di per è il numero di modi interessanti in cui possiamo creare l'elenco di parole. Ad esempio, attraverso l'espansione del tutore:



[io@linuxbox~]$ per io in {A..D}; fai echo $i; fatto

ABCD

[io@linuxbox~]$ per io in {A..D}; fai echo $i; fatto

ABCD


o espansione del percorso:



[io@linuxbox~]$ for i nelle distro*.txt; fai echo $i; fatto

distribuzioni-per-data.txt distribuzioni-date.txt distribuzioni-nomi-chiave.txt distribuzioni-chiave-vernums.txt distribuzioni-nomi.txt distribuzioni.txt

distribuzioni-vernums.txt distribuzioni-versioni.txt

[io@linuxbox~]$ for i nelle distro*.txt; fai echo $i; fatto

distribuzioni-per-data.txt distribuzioni-date.txt distribuzioni-nomi-chiave.txt distribuzioni-chiave-vernums.txt distribuzioni-nomi.txt distribuzioni.txt

distribuzioni-vernums.txt distribuzioni-versioni.txt


o sostituzione di comando:



#! / Bin / bash

# parola più lunga: trova la stringa più lunga in un file while [[ -n $1 ]]; fare

if [[ -r $1 ]]; quindi max_word= max_len=0

for i in $(stringhe $1); do len=$(echo -n $i | wc -c)

if (( len > max_len )); allora max_len=$len max_word=$i

fi

fatto

echo "$1: '$max_word' ($max_len caratteri)"

primo turno

fatto

#! / Bin / bash

# parola più lunga: trova la stringa più lunga in un file while [[ -n $1 ]]; fare

if [[ -r $1 ]]; quindi max_word= max_len=0

for i in $(stringhe $1); do len=$(echo -n $i | wc -c)

if (( len > max_len )); allora max_len=$len max_word=$i

fi

fatto

echo "$1: '$max_word' ($max_len caratteri)"

primo turno

fatto

per: forma tradizionale a conchiglia


In questo esempio, cerchiamo la stringa più lunga trovata all'interno di un file. Quando vengono dati uno o più nomi di file sulla riga di comando, questo programma utilizza il stringhe programma (che è incluso nel pacchetto GNU binutils) per generare un elenco di "parole" di testo leggibili in ciascun file. Il per loop elabora ogni parola a turno e determina se la parola corrente è la più lunga trovata finora. Al termine del ciclo, viene visualizzata la parola più lunga.

Se l'opzionale in parole parte del per comando è omesso, per di default elabora i parametri posizionali. Modificheremo il nostro parola più lunga script per utilizzare questo metodo:



#! / Bin / bash

# longest-word2: trova la stringa più lunga in un file per i; fare

if [[ -r $i ]]; quindi max_word= max_len=0

per j in $(stringhe $i); do len=$(echo -n $j | wc -c)

if (( len > max_len )); allora max_len=$len max_word=$j

fi

fatto

echo "$i: '$max_word' ($max_len caratteri)"

fi fatto

#! / Bin / bash

# longest-word2: trova la stringa più lunga in un file per i; fare

if [[ -r $i ]]; quindi max_word= max_len=0

per j in $(stringhe $i); do len=$(echo -n $j | wc -c)

if (( len > max_len )); allora max_len=$len max_word=$j

fi

fatto

echo "$i: '$max_word' ($max_len caratteri)"

fi fatto


Immagine

Come possiamo vedere, abbiamo cambiato il ciclo più esterno da usare per al posto di while. Omettendo l'elenco delle parole in per comando, vengono invece utilizzati i parametri posizionali. All'interno del ciclo, istanze precedenti della variabile i sono stati modificati nella variabile j. L'uso di spostamento è stato anche eliminato.


Perché io?

Potresti aver notato che la variabile i è stato scelto per ciascuno dei per esempi di loop sopra. Come mai? Nessun motivo specifico in realtà, a parte la tradizione. La variabile usata con per può essere qualsiasi variabile valida, ma i è il più comune, seguito da j ed k.



Immagine

La base di questa tradizione deriva dal linguaggio di programmazione Fortran. In Fortran, le variabili non dichiarate che iniziano con le lettere I, J, K, L e M vengono digitate automaticamente come intere, mentre le variabili che iniziano con qualsiasi altra lettera vengono digitate come reali (numeri con frazioni decimali). Questo comportamento ha portato i programmatori a utilizzare le variabili I, J e K per le variabili di ciclo, poiché era meno faticoso utilizzarle quando era necessaria una variabile temporanea (come spesso sono le variabili di ciclo).

Ha portato anche al seguente motto di spirito basato su Fortran: "DIO è reale, a meno che non sia dichiarato intero".


Il miglior sistema operativo cloud computing su OnWorks: