Keresés

Keresendő kifejezés:

Toplista

Toplista
  • betöltés...

Segítség!

Ahhoz, hogy mások kérdéseit és válaszait megtekinthesd, nem kell beregisztrálnod, azonban saját kérdés kiírásához ez szükséges!

Bash script

63
Sziasztok!
Egy shell scriptet szeretnék írni, alapvető számítási funkciókkal (összeadás, kivonás, szorzás, osztás, hatványozás)

Viszont:
- nem menüs megoldás kell, hanem olyat amit szimplán a beírt adatot dolgozza fel (pl : (3^2)*5)
- képesnek kell lennie értelmezni a zárójeles kifejezéseket
Jelenleg 1 felhasználó nézi ezt a kérdést.
Bash, informatika, shell, script
0
Felsőoktatás / Informatika

Válaszok

1
(Sajnálom, ez nem válasz, csak hozzászólás a kérdéshez, amit az oldal motor sajnos nem támogat.)

„szeretnék írni” — ezt értsük úgy, hogy magánszorgalomból gyakorlásként? Mert a shell nem éppen alkalmas a célra.
    • Kizárólag egész számokkal képesek dolgozni
    • A függvényeik nem kaphatnak és nem adhatnak vissza tömböt
    • A tömbjeik 1 dimenziósak
Ez utóbbiak megnehezítik a zárójelek közti részek rekurzív kiértékelését.

Szóval hacsak nem kötelező, akkor nem feltétlenül ez a legjobb shell szkript feladat.

Ami a példád kiértékelését illeti, annyival még elboldogulnak a shellek (feltételezve, hogy a „^” hatványozást hivatott jelölni):

bash-5.1$ echo $(( (3**2)*5 ))
45

De ez csak addig ad kielégítő eredményt amíg el nem kezdesz osztani. Olyankor szoktak átállni az emberek a bc használatára (ott már „^” a hatványozás):

bash-5.1$ echo '(3^2)*5' | bc -l
45

═════[ frissítés ]═════════════════════════

Egy ilyen mennyire volna rossz kiindulási pont? https://pastebin.com/Cy2KKkpF

    • Reguláris kifejezéseket használ a kifejezés egyes részeinek a kiértékelésére
    • Minden elsőbbségi csoportot külön kezel
    • Az elemi műveletek elvégzését a Bash képességeire bízza
    • Betettem még az osztási maradékot, mert nem kér enni
    • Továbbra sincs valós szám támogatás
    • Előjelként használt + és - szintén nem támogatott
    • Szintaktikai ellenőrzés nincs, amit nem ért meg azt úgy hagyja
Módosítva: 1 hete
0