(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