Stații de lucru online OnWorks Linux și Windows

logo

Găzduire online gratuită pentru stații de lucru

<Înapoi | Cuprins | Următor>

pentru: Forma tradițională de Shell

Originală pentru sintaxa comenzii este:

pentru variabil [în cuvinte]; do

comenzi

făcut

Unde variabil este numele unei variabile care va crește în timpul execuției buclei, cuvinte este o listă opțională de articole cărora li se vor aloca secvențial variabil, și comenzi sunt comenzile care urmează să fie executate la fiecare iterație a buclei.

pentru comanda este utilă pe linia de comandă. Putem demonstra cu ușurință cum funcționează:



[eu@linuxbox ~]$ pentru i în ABCD; face eco $i; Terminat

ABCD

[eu@linuxbox ~]$ pentru i în ABCD; face eco $i; Terminat

ABCD


În acest exemplu, pentru i se oferă o listă de patru cuvinte: „A”, „B”, „C” și „D”. Cu o listă de patru cuvinte, bucla este executată de patru ori. De fiecare dată când bucla este executată, variabilei i se atribuie un cuvânt i. În interiorul buclei, avem un ecou comandă care afișează valoarea lui i pentru a arăta sarcina. Ca și în cazul în timp ce și până la bucle, făcut cuvântul cheie închide bucla.


Caracteristica cu adevărat puternică a pentru este numărul de moduri interesante prin care putem crea lista de cuvinte. De exemplu, prin extinderea bretelor:



[eu@linuxbox ~]$ pentru i în {A..D}; face eco $i; Terminat

ABCD

[eu@linuxbox ~]$ pentru i în {A..D}; face eco $i; Terminat

ABCD


sau extinderea numelui de cale:



[eu@linuxbox ~]$ pentru i în distros*.txt; face eco $i; Terminat

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

[eu@linuxbox ~]$ pentru i în distros*.txt; face eco $i; Terminat

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


sau înlocuirea comenzii:



#! / Bin / bash

# cel mai lung cuvânt: găsiți cel mai lung șir dintr-un fișier în timp ce [[ -n $1 ]]; do

dacă [[ -r $1 ]]; apoi max_word= max_len=0

pentru i în $(șiruri $1); do len=$(echo -n $i | wc -c)

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

fi

făcut

echo „$1: „$max_word” ($max_len caractere)”

schimbare fi

făcut

#! / Bin / bash

# cel mai lung cuvânt: găsiți cel mai lung șir dintr-un fișier în timp ce [[ -n $1 ]]; do

dacă [[ -r $1 ]]; apoi max_word= max_len=0

pentru i în $(șiruri $1); do len=$(echo -n $i | wc -c)

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

fi

făcut

echo „$1: „$max_word” ($max_len caractere)”

schimbare fi

făcut

pentru: Forma tradițională de Shell


În acest exemplu, căutăm cel mai lung șir găsit într-un fișier. Când i se oferă unul sau mai multe nume de fișiere pe linia de comandă, acest program folosește siruri program (care este inclus în pachetul GNU binutils) pentru a genera o listă de „cuvinte” text lizibile în fiecare fișier. The pentru bucla procesează fiecare cuvânt pe rând și determină dacă cuvântul curent este cel mai lung găsit până acum. Când bucla se încheie, este afișat cel mai lung cuvânt.

Dacă opțional in cuvinte porțiune din pentru comanda este omisă, pentru implicit procesează parametrii de poziție. Ne vom modifica cel mai lung cuvânt script pentru a utiliza această metodă:



#! / Bin / bash

# longest-word2: găsiți cel mai lung șir dintr-un fișier pentru i; do

dacă [[ -r $i ]]; apoi max_word= max_len=0

pentru j în $(șiruri $i); do len=$(echo -n $j | wc -c)

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

fi

făcut

echo „$i: „$max_word” ($max_len caractere)”

fi gata

#! / Bin / bash

# longest-word2: găsiți cel mai lung șir dintr-un fișier pentru i; do

dacă [[ -r $i ]]; apoi max_word= max_len=0

pentru j în $(șiruri $i); do len=$(echo -n $j | wc -c)

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

fi

făcut

echo „$i: „$max_word” ($max_len caractere)”

fi gata


imagine

După cum putem vedea, am schimbat bucla cea mai exterioară pentru a fi utilizată pentru în loc de în timp ce. Prin omiterea listei de cuvinte din pentru comanda, parametrii poziționali sunt utilizați în schimb. În interiorul buclei, instanțe anterioare ale variabilei i au fost modificate la variabila j. Utilizarea schimbare a fost, de asemenea, eliminat.


De ce eu?

Poate ați observat că variabila i a fost ales pentru fiecare dintre pentru exemple de buclă de mai sus. De ce? Niciun motiv anume, de fapt, în afară de tradiție. Variabila folosită cu pentru poate fi orice variabilă validă, dar i este cel mai frecvent, urmat de j și k.



imagine

Baza acestei tradiții vine din limbajul de programare Fortran. În Fortran, variabilele nedeclarate care încep cu literele I, J, K, L și M sunt introduse automat ca numere întregi, în timp ce variabilele care încep cu orice altă literă sunt tastate ca reale (numere cu fracții zecimale). Acest comportament i-a determinat pe programatori să folosească variabilele I, J și K pentru variabilele de buclă, deoarece a fost mai puțin de lucru să le folosești atunci când era nevoie de o variabilă temporară (cum sunt adesea variabilele de buclă).

De asemenea, a condus la următoarea duhă bazată pe Fortran: „Dumnezeu este real, dacă nu este declarat întreg.”


Top OS Cloud Computing la OnWorks: