/ 4.sh
4.sh
1 #!/usr/bin/bash 2 # a*x + b 3 4 function show_error(){ 5 dialog --erase-on-exit --msgbox "$1" 5 $[ ${#1} + 4 ] 6 exit 7 } 8 9 subject=`dialog --stdout --nocancel --erase-on-exit \ 10 --menu "Co policzyć?" 0 0 0 \ 11 1 "Miejsce zerowe wielomianu" \ 12 2 "Liczbę pi" \ 13 3 "Złotą liczbę"` || exit 14 15 case $subject in 16 1) 17 data=(`dialog --stdout --nocancel --erase-on-exit \ 18 --form "[a]*x + [b] = 0" 0 0 0 \ 19 "a:" 1 1 "" 1 10 10 0 \ 20 "b:" 2 1 "" 2 10 10 0`) || exit 21 22 # https://stackoverflow.com/questions/806906/how-do-i-test-if-a-variable-is-a-number-in-bash 23 for i in 0 1; do 24 n=${data[i]} 25 re='^-?[0-9]+(\.[0-9]+)?$' 26 [[ "$n" =~ $re ]] || show_error "Błędna liczba '$n'" 27 done 28 29 a=${data[0]} 30 b=${data[1]} 31 # ax + b = 0 32 # ax = -b 33 # x = -b / a 34 echo "${a}x + $b = 0" 35 x=`bc -l <<< "$b * -1 / $a"` 36 # ciekawostka: bc nie zwraca kodu błędu nawet gdy dzieli przez zero 37 echo "x = $x" 38 ;; 39 esac