Advertisement
Guest User

Untitled

a guest
Dec 17th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.15 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3.  
  4. function fun {
  5. expression=""
  6. counter=1
  7. measure=""
  8. IFS==
  9. declare -a Array=($1)
  10. IFS=' '
  11. a="${Array[1]}"
  12. a=${a:0:-2}
  13. declare -a Mass=($a)
  14. for j in "${Mass[@]}"; do
  15. cur=$j
  16. if [[ $cur == '-' ]]; then
  17. expression="$expression""$cur"
  18. counter=1
  19. elif [[ $cur == '+' ]]; then
  20. expression="$expression""$cur"
  21. counter=1
  22. else
  23. if [[ $counter = "0" ]]; then
  24. expression="+""$expression"
  25. fi
  26. curNumber=$(expr match "${cur}" '\([0-9]*\)')
  27. curNumLen=${#curNumber}
  28. curLen=${#cur}
  29. let " razn = $curLen - $curNumLen "
  30. measure=${cur:curNumLen:razn}
  31. if [[ $measure == "s" ]];then
  32. expression="$expression""$curNumber"
  33. elif [[ $measure == "min" ]]; then
  34. expression="$expression""$curNumber""*60"
  35. elif [[ $measure == "h" ]]; then
  36. expression="$expression""$curNumber""*60*60"
  37. elif [[ $measure == "d" ]]; then
  38. expression="$expression""$curNumber""*60*60*24"
  39. elif [[ $measure == "mm" ]]; then
  40. expression="$expression""$curNumber""/1000"
  41. elif [[ $measure == "sm" ]]; then
  42. expression="$expression""$curNumber""/100"
  43. elif [[ $measure == "dm" ]]; then
  44. expression="$expression""$curNumber""/10"
  45. elif [[ $measure == "m" ]]; then
  46. expression="$expression""$curNumber"
  47. elif [[ $measure == "km" ]]; then
  48. expression="$expression""$curNumber""*1000"
  49. elif [[ $measure == "mg" ]]; then
  50. expression="$expression""$curNumber""/1000000"
  51. elif [[ $measure == "g" ]]; then
  52. expression="$expression""$curNumber""/1000"
  53. elif [[ $measure == "kg" ]]; then
  54. expression="$expression""$curNumber"
  55. elif [[ $measure == "t" ]]; then
  56. expression="$expression""$curNumber""*1000"
  57. else
  58. echo " error at line $i : $1"
  59. return
  60. fi
  61. fi
  62. done
  63. t=`bc -l <<<"scale=9;$expression"`
  64. if [[ "$t" = .* ]]; then
  65. t="0$t"
  66. fi
  67. echo "${Array[0]}""=""$t"
  68. }
  69. if [[ $1 = "-h" || $1 = "--help" ]]; then
  70. echo This prog counts and displays measures in standard form
  71. echo "(seconds, kilograms, meters)"
  72. elif [ -f $1 ]; then
  73. FILE=$1
  74. while read LINE; do
  75. let "i=i+1"
  76. fun "$LINE"" "
  77. done < $1
  78. else echo This file does not exist
  79. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement