Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- function fun {
- expression=""
- counter=1
- measure=""
- IFS==
- declare -a Array=($1)
- IFS=' '
- a="${Array[1]}"
- a=${a:0:-2}
- declare -a Mass=($a)
- for j in "${Mass[@]}"; do
- cur=$j
- if [[ $cur == '-' ]]; then
- expression="$expression""$cur"
- counter=1
- elif [[ $cur == '+' ]]; then
- expression="$expression""$cur"
- counter=1
- else
- if [[ $counter = "0" ]]; then
- expression="+""$expression"
- fi
- curNumber=$(expr match "${cur}" '\([0-9]*\)')
- curNumLen=${#curNumber}
- curLen=${#cur}
- let " razn = $curLen - $curNumLen "
- measure=${cur:curNumLen:razn}
- if [[ $measure == "s" ]];then
- expression="$expression""$curNumber"
- elif [[ $measure == "min" ]]; then
- expression="$expression""$curNumber""*60"
- elif [[ $measure == "h" ]]; then
- expression="$expression""$curNumber""*60*60"
- elif [[ $measure == "d" ]]; then
- expression="$expression""$curNumber""*60*60*24"
- elif [[ $measure == "mm" ]]; then
- expression="$expression""$curNumber""/1000"
- elif [[ $measure == "sm" ]]; then
- expression="$expression""$curNumber""/100"
- elif [[ $measure == "dm" ]]; then
- expression="$expression""$curNumber""/10"
- elif [[ $measure == "m" ]]; then
- expression="$expression""$curNumber"
- elif [[ $measure == "km" ]]; then
- expression="$expression""$curNumber""*1000"
- elif [[ $measure == "mg" ]]; then
- expression="$expression""$curNumber""/1000000"
- elif [[ $measure == "g" ]]; then
- expression="$expression""$curNumber""/1000"
- elif [[ $measure == "kg" ]]; then
- expression="$expression""$curNumber"
- elif [[ $measure == "t" ]]; then
- expression="$expression""$curNumber""*1000"
- else
- echo " error at line $i : $1"
- return
- fi
- fi
- done
- t=`bc -l <<<"scale=9;$expression"`
- if [[ "$t" = .* ]]; then
- t="0$t"
- fi
- echo "${Array[0]}""=""$t"
- }
- if [[ $1 = "-h" || $1 = "--help" ]]; then
- echo This prog counts and displays measures in standard form
- echo "(seconds, kilograms, meters)"
- elif [ -f $1 ]; then
- FILE=$1
- while read LINE; do
- let "i=i+1"
- fun "$LINE"" "
- done < $1
- else echo This file does not exist
- fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement