ꡬν
κ°μ
Bashλ‘ μμ±λ κ°λ¨ν κ³μ°κΈ° μ€ν¬λ¦½νΈμ λλ€. μ¬μ©μλ‘λΆν° λ κ°μ μ«μμ μ°μ°μλ₯Ό μ½κ³ κ³μ°μ μνν λ€μ μ¬μ©μκ° μ€μ§λ₯Ό μ νν λκΉμ§ μ΄μ κ³μ°μ κ²°κ³Όλ‘ κ³μ°μ κ³μν μ μμ΅λλ€.
μ¬μ© μΈμ΄
bash, shell script
μ½λ λ° ν¨μ
μ€ν¬λ¦½νΈλ λμ€μ μ¬μ©μ μ
λ ₯μ μ ν¨μ±μ κ²μ¬νλ λ° μ¬μ©λλ λ κ°μ μ κ·μ REGEX_NUMBER
λ° REGEX_OPERATION
μ μ μνλ κ²μΌλ‘ μμν©λλ€. κ·Έλ° λ€μ μ€ν¬λ¦½νΈλ μ¬λ¬ κΈ°λ₯μ μ μν©λλ€.
#!/bin/bash
: ν΄λΉ νμΌμ bash μλ‘ μ€νμν¨λ€λ μλ―ΈTOTAL
: μ°μ° κ²°κ³Όλ₯Ό μ μ₯νλ μ μ λ³μFLAG
: μ°μ°μ κ³μ ν μ§ μ¬λΆλ₯Ό μ μ₯νλ μ μ λ³μREGEX_NUMBER
: μ«μ νμΈ μ κ·ννμREGEX_OPERATION
: μ¬μΉμ°μ° νμΈ μ κ·ννμ
is_number
μ¬μ©μμκ² μ«μλ₯Ό μ
λ ₯νλΌλ λ©μμ§λ₯Ό νμν λ€μ REGEX_NUMBER
μ κ·μμ μ¬μ©νμ¬ μ
λ ₯μ΄ μ ν¨ν μ«μμΈμ§ νμΈν©λλ€. μ
λ ₯μ΄ μ ν¨ν μ«μμ΄λ©΄ ν¨μλ μ«μλ₯Ό λ°νν©λλ€. μ
λ ₯μ΄ μ ν¨ν μ«μκ° μλ κ²½μ° ν¨μλ μ¬μ©μμκ² λ€μ μλνλΌλ λ©μμ§λ₯Ό νμν©λλ€.
λ¬Έμ | μ€λͺ |
---|---|
" " | " " μ¬μ΄μ λ€μ΄μλ λͺ¨λ νΉμ λ¬Έμλ₯Ό μΌλ° λ¬Έμλ‘ μΈμνμ§λ§ λ¨, $()μ ` `(λͺ λ Ήμ΄ λ체 νΉμλ¬Έμ), $ (λ³μ κ° λ체 νΉμλ¬Έμ), \ (quotation νΉμλ¬Έμ) λ±μ μμΈ |
μ¦, echo "$op" μΌλ‘ νλ©΄ * λ‘ μ λ ₯λ°μ μΈμκ°μ asteriskμ΄ μλ λ¬Έμ κ·Έλλ‘ * λ‘ μΆλ ₯ν μ μμ΅λλ€.
is_operation
is_numberμ κ°μ λ°©μμΌλ‘ μλνμ§λ§ μ¬μ©μμκ² μ°μ°(+, -, *, /, %)μ μ
λ ₯νλΌλ λ©μμ§λ₯Ό νμνκ³ REGEX_OPERATION
μ κ·μμ μ¬μ©νμ¬ μ
λ ₯μ νμΈν©λλ€.
is_divided_by_zero
μ°μ°μ΄ λλκΈ°(/)μ΄κ³ λ λ²μ§Έ νΌμ°μ°μκ° 0μΈμ§ νμΈνλ ν¨μμ λλ€. λ μ‘°κ±΄μ΄ λͺ¨λ μ°Έμ΄λ©΄ μ¬μ©μμκ² μ μ°μ°κΈ°νΈμ λ λ²μ§Έ νΌμ°μ°μλ₯Ό μ λ ₯νλΌλ λ©μμ§κ° νμλ©λλ€.
calculate
μΈ κ°μ μΈμ(μ°μ°μμ λ κ°μ νΌμ°μ°μ)λ₯Ό μ¬μ©ν©λλ€. case λ¬Έμ μ¬μ©νμ¬ μ°μ°μλ₯Ό κΈ°λ°μΌλ‘ μνν μμ
μ κ²°μ ν λ€μ νΌμ°μ°μλ₯Ό μ¬μ©νμ¬ κ³μ°μ μνν©λλ€. κ³μ° κ²°κ³Όλ TOTAL
λ³μμ μ μ₯λ©λλ€.
is_answer
μ¬μ©μμκ² "YES" λλ "NO"λ₯Ό μ λ ₯νλΌλ λ©μμ§λ₯Ό νμνκ³ κ·Έμ λ°λΌ FLAG λ³μλ₯Ό 1 λλ 0μΌλ‘ μ€μ ν©λλ€. μ΄ κΈ°λ₯μ μ μ°νλ©° μ¬μ©μκ° λλ¬Έμ λλ μλ¬Έμ λλ μΆμ½ν "y" λλ "n"μΌλ‘ "YES" λλ "NO"λ₯Ό μ λ ₯ν μ μμ΅λλ€.
main
μ¬μ©μκ° μ€μ§λ₯Ό μ νν λκΉμ§ κ³μλλ 루νμ λ€μ΄κ°λλ€. 루ν λ΄μμ μ€ν¬λ¦½νΈλ is_number λ° is_operation ν¨μλ₯Ό μ¬μ©νμ¬ μ²« λ²μ§Έ μ«μ, μ°μ°μ λ° λ λ²μ§Έ μ«μλ₯Ό μ½μ λ€μ is_divided_by_zero ν¨μλ₯Ό μ¬μ©νμ¬ μ°μ°μ΄ 0μΌλ‘ λλλμ§ νμΈν©λλ€. μ°μ°μ΄ 0μΌλ‘ λλμ§ μλ κ²½μ° μ€ν¬λ¦½νΈλ μ°μ°μ μννκΈ° μν΄ μ°μ° ν¨μμ μ°μ°μμ νΌμ°μ°μλ₯Ό μ λ¬ν©λλ€. κ·Έλ° λ€μ μ€ν¬λ¦½νΈλ μ¬μ©μμκ² κ³μνκ±°λ μ€μ§νλΌλ λ©μμ§λ₯Ό νμνκ³ μ¬μ©μκ° μ€μ§λ₯Ό μ ννλ©΄ 루νλ₯Ό μ’ λ£ν©λλ€. 루νκ° λλλ©΄ μ€ν¬λ¦½νΈλ TOTAL λ³μμ μ μ₯λ μ΅μ’ κ²°κ³Όλ₯Ό μΈμν©λλ€.
- $op λ₯Ό "$op"λ‘ λ겨μ€μΌ μ°μ°κΈ°νΈλ₯Ό λ¬Έμμ΄λ‘ μΈμν΄μ μ λλ‘ μλ
κ²°κ³Ό
μ€ν λ°©λ²
sh cal.sh
νλ©΄
κΆκΈν μ
-eq
vs=
κ°μ λΉκ΅ν λ,-eq
μ=
μ μ±λ₯μ΄λ.. μ°¨μ΄κ° μλμ§? μ΄λ€κ±Έ μ°λκ² μ’μμ§?