Kezdőoldal » Számítástechnika » Programozás » Elmagyarázná valaki, hogy...

Elmagyarázná valaki, hogy ezek mit csinálnak? (Shell script-Bash)

Figyelt kérdés

echo -n "Adj meg egy szamot:"

read N

if [ $N -lt 10 ]

then

echo "Ez egyjegyu"

exit

fi


sum=0

while [ $N -gt 0 ]

do

modn=`expr $N \% 10`

sum=`expr $sum + $modn`

N=`expr $N \/ 10`

done


A while kezdetétől nem tudom mik a lépések.


2014. dec. 8. 21:21
 1/3 A kérdező kommentje:

összben tudom, hogy szummáz, de mi a "modn", a "-gt 0", $N\%


N=`expr $N \/ 10`

itt pl. mi a "\/ 10" ?

2014. dec. 8. 21:24
 2/3 anonim ***** válasza:

N=`expr $N \/ 10`

itt pl. mi a "\/ 10" ?


Osztás 10-el, az osztás jel (/) meg escape-elve van.

2014. dec. 8. 21:43
Hasznos számodra ez a válasz?
 3/3 anonim ***** válasza:

Ez a számjegyek összegét tárolja el a $sum változóban.


Nem tudom mennyire vagy otthon a programozásban, úgyhogy lehet hogy olyasmit is írok ami felesleges.


A "while" egy ciklust indít, ami addig fut amíg a "while" parancs utáni []-ben megadott feltétel igaz.

Az fontosabb számokat összehasonlító operátorok:

-gt (greater than) >

-lt (less than) <

-ge (greater then or equal) >=

-le (less than or equal) <=

-eq (equal) ==

-ne (not equal) !=


Itt a feltétel hogy (($N > 0)) azaz addig fut amíg az N változó nagyobb mint 0.


A "do" a ciklus kezdetét jelzi, a "done" a ciklus végét.


Ezután értékadások következnek:

modn=`expr $N \% 10`

A `` közti parancs lefut és a visszatérési értéke kerül a modn-be.

Fontos hogy a `` (AltGr+7) egy külső programot indít és annak a kimenetét adja vissza.

Az expr program az átadott matematikai kifejezést (expression) értelemezi és számolja ki majd a kimenetében visszaadja az eredményt. A kifejezés "N % 10" vagy más szóval N mod10 (osztásmaradék). A "\" karakterrel tudod megmondani a shell-nek hogy az azt követő karakter nem bír spciális jelentéssel, a string része. Ezek az un. escape karakterek. Pl. ha dollárjelet akarsz írni \$ kell írnod különben azt hiszi hogy a $ nem egy karakter hanem egy kiírandó változó kezdete. A modn-be az N 10-zel való osztásának maradékát rakjuk, tehát az utolsó számjegyét.


sum=`expr $sum + $modn`

Az expr parancs itt összeadja a két változót, azaz az összeghez hozzáadja mindig a szám utolsó jegyét.


N=`expr $N \/ 10`

Az N számot frissíti, az új szám a "N / 10" osztás eredménye. (Itt is a speciális karakter elé \ jel kerül, jelezve hogy hogy a / nem bír különleges jelentéssel, vagy a string része amit az expr parancs paraméterül kap. A $ nem kap \-t, hiszen speciális jelentése az azt követő változó kiírása.)


Tehát ha a számunk 123-volt, akkor a sum változóba sorban 3+2+1=6 kerül majd kilép a ciklusból.

2014. dec. 8. 22:12
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!