Advertisement
shchuko

v_handler

Nov 19th, 2019
504
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.03 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. if [[ ! -r v_data ]]; then
  4.         echo "v_data file not exists";
  5.         exit 0;
  6. fi;
  7.  
  8. curpid=$(echo $$);
  9. mode="+";
  10. value=1;
  11. echo "Start value: $value";
  12.  
  13. function calculate {
  14.         if [[ "$mode" == "+" ]]; then
  15.                 let value=$value+$1;
  16.                 else
  17.                 let value=$value*$1;
  18.         fi;
  19. }
  20.  
  21. (tail -n 0 -f v_data) |
  22. while true; do
  23.         read LINE;
  24.         case $LINE in
  25.         "+")
  26.                 mode="+"
  27.                 echo "Add mode"
  28.                 ;;
  29.         "*")
  30.                 mode="*"
  31.                 echo "Mul mode"
  32.                 ;;
  33.         "QUIT")
  34.                 kill -- -$(ps -o pgid=$curpid | grep -o [0-9]*);
  35.                 exit 0;
  36.                 ;;
  37.         *)
  38.                 if [[ "$LINE" =~ [0-9]+ ]]
  39.                 then
  40.                         calculate $LINE;
  41.                         echo "New value: $value";
  42.                 else
  43.                         echo "Incorrect message"
  44.                 fi
  45.                 ;;
  46.         esac;
  47. done;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement