Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

per: forma tradizionale a conchiglia

L'originale da la sintassi del comando è:

da variabile [nel parole]; Fare

comandi

fatto

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

. da Il comando è utile sulla riga di comando. Possiamo facilmente dimostrare come funziona:



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

ABCD

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

ABCD


In questo esempio, da 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 il ciclo viene eseguito, una parola viene assegnata alla variabile iAll'interno del ciclo, abbiamo un eco comando che visualizza il valore di i per mostrare l'assegnazione. Come con il while e fino a quando loop, il fatto la parola chiave chiude il cerchio.


La caratteristica davvero potente di da è il numero di modi interessanti in cui possiamo creare l'elenco di parole. Ad esempio, tramite l'espansione delle parentesi graffe:



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

ABCD

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

ABCD


o espansione del percorso:



[io@linuxbox~]$ per i in distros*.txt; esegui echo $i; fatto

distros-by-date.txt distros-dates.txt distros-key-names.txt distros-key-vernums.txt distros-names.txt distros.txt

distros-vernums.txt distros-versions.txt

[io@linuxbox~]$ per i in distros*.txt; esegui echo $i; fatto

distros-by-date.txt distros-dates.txt distros-key-names.txt distros-key-vernums.txt distros-names.txt distros.txt

distros-vernums.txt distros-versions.txt


o sostituzione di comando:



#! / Bin / bash

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

se [[ -r $1 ]]; allora max_word= max_len=0

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

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

fi

fatto

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

spostamento fi

fatto

#! / Bin / bash

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

se [[ -r $1 ]]; allora max_word= max_len=0

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

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

fi

fatto

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

spostamento fi

fatto

per: forma tradizionale a conchiglia


In questo esempio, cerchiamo la stringa più lunga trovata all'interno di un file. Quando vengono forniti uno o più nomi di file sulla riga di comando, questo programma utilizza l' stringhe programma (incluso nel pacchetto GNU binutils) per generare un elenco di "parole" di testo leggibili in ogni file. Il da Il ciclo 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 da il comando è omesso, da per impostazione predefinita 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; fai

se [[ -r $i ]]; allora max_word= max_len=0

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

se ((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; fai

se [[ -r $i ]]; allora max_word= max_len=0

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

se ((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 modificato il ciclo più esterno per utilizzare da al posto di while. Omettendo l'elenco delle parole nel da comando, vengono utilizzati invece i parametri posizionali. All'interno del ciclo, le 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 da Esempi di loop sopra. Perché? In realtà non c'è una ragione specifica, a parte la tradizione. La variabile utilizzata con da può essere qualsiasi variabile valida, ma i è il più comune, seguito da j e 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 automaticamente tipizzate come interi, mentre le variabili che iniziano con qualsiasi altra lettera vengono tipizzate come reali (numeri con frazioni decimali). Questo comportamento ha portato i programmatori a utilizzare le variabili I, J e K come variabili di ciclo, poiché era meno laborioso utilizzarle quando era necessaria una variabile temporanea (come spesso accade con le variabili di ciclo).

Ciò ha portato anche alla seguente battuta basata sul Fortran: "DIO è reale, a meno che non venga dichiarato intero".


Il miglior sistema operativo cloud computing su OnWorks: