#!/bin/bash

# Skrypt convertatemp wyświetla temperaturę wprowadzoną w skali Celsjusza,
# Fahrenheita lub Kelvina przeliczoną na inną skalę.

if [ $# -eq 0 ] ; then
  cat << EOF >&2
Użycie: $0 temperatura[C|F|K]
Poszczególne sufiksy oznaczają:
   C    skala Celsjusza (domyślna) 
   F    skala Fahrenheita
   K    skala Kelvina
EOF
  exit 1
fi

unit="$(echo $1|sed -e 's/[-[:digit:]]*//g' | tr '[:lower:]' '[:upper:]' )"
temp="$(echo $1|sed -e 's/[^-[:digit:]]*//g')"

case ${unit:=C}
in
  F ) # Formuła przeliczająca skalę Fahrenheita na skalę Celsjusza: Tc = (F - 32) / 1.8
  farn="$temp"
  cels="$(echo "scale=2;($farn - 32) / 1.8" | bc)"
  kelv="$(echo "scale=2;$cels + 273.15" | bc)"
  ;;

  C ) # Formuła przeliczająca skalę Celsjusza na skalę Fahrenheita: Tf = (9/5)*Tc+32
  cels=$temp
  kelv="$(echo "scale=2;$cels + 273.15" | bc)"
  farn="$(echo "scale=2;(1.8 * $cels) + 32" | bc)"
  ;;

  K ) # Skala Celsjusza = skala Kelvina - 273.15, następnie wykorzystywana jest
      # formuła Celsjusz -> Fahrenheit.
  kelv=$temp
  cels="$(echo "scale=2; $kelv - 273.15" | bc)"
  farn="$(echo "scale=2; (1.8 * $cels) + 32" | bc)"
  ;;

  *)
  echo "Błędna jednostka temperatury."
  exit 1
esac  

echo "Skala Fahrenheita = $farn"
echo "Skala Celsjusza   = $cels"
echo "Skala Kelvina     = $kelv"

exit 0
