Napisać skrypt "logowanie", który będzie symulował panel logowania systemu linux. Podawana ma być nazwa użytkownika (jawnie), a następnie hasło (ukryty text). W pliku "hasla", jeżeli jeszcze nie ma wpisu o podanym loginie i haśle należy dopisać te dane w postaci "login haslo" (różnica pomiędzy > a >>). Natomiast w pliku "informacje" należy przechowywać informacje o logowaniach tzw. logi, które posłużą do drugiej czesci zadania (forma dowolna według uznania programisty).
II część
Parametrami skryptu "logowanie" powinny byc informacje o tym kiedy zmienić hasło danego użytkownika (wywołać komendę passwd).

Zmiana hasła następuje po upłynięciu określonego w parametrze okresu czasu przykładowe wywolanie skryptu
./logowanie -g 2
oznaczać to będzie, że jeżeli ostatnie logowanie było conajmniej 2 godziny temu to należy zaproponować użytkownikowi zmianę hasła i uruchomić polecenie passwd.
Pozostałe opcje:
-d - dni
-g - godziny
-m - minuty
-s - sekundy

Problem. W warunku zaznaczonym na czerwono nie wiem dlaczego nie chce mi działać funkcja read i case a moim zdaniem wszystko jest poprawnie napisane i nie wiem jak to poprawić.
I jeszcze jedno w jaki sposób mogłabym zrobić nowe hasło do odpowiedniego loginu, ponieważ nie wiem jak zrobic zeby poprzednie hasło się skasowało i w jego miejsce było podane nowe hasło. Bo teraz mam zrobione poprostu że do pliku dopisywany jest ten sam login ale z innym hasłem.

Kod:
#!/bin/bash
echo -n "Login: "
read loginCtrl
echo -n "Haslo: "
read -s hasloCtrl
#echo "$(date +%s) $loginCtrl" >> informacje;

echo
#sprawdza czy plik z haslami istnieje
if [ ! -e hasla ]; then
  >hasla
fi
if [ ! -e informacje ]; then
  >informacje
fi
#sprawdza czy login został podany
if [ "$loginCtrl" == "" ]; then
  echo "nieprawidlowy login"
  exit 1
fi
#warunek ktory odczytuje dane z pliku, jeżeli nie znajdzie loginu to
#wykonywana jest klauzula else
grep $loginCtrl hasla | if read field1 field2; then
  login=$field1
  haslo=$field2
  if [ "$login" == "$loginCtrl" ] && [ "$haslo" == "$hasloCtrl" ]; then
cat informacje | tail -n 1 | if read loginTime loginName; then
  now=`date +"%s"`
  lastlog=$(($now-$loginTime))
  case "$1" in
    "-d")
      if [ $(($lastlog/86400)) -ge "$2" ]; then
        ./zmienhaslo
      fi
    ;;
    "-g")
      if [ $(($lastlog/3600)) -ge "$2" ]; then
        ./zmienhaslo
      fi
    ;;
    "-m")
      if [ $(($lastlog/60)) -ge "$2" ]; then
 	./zmienhaslo
      fi
    ;;
    "-s")
      if [ $(($lastlog)) -ge "$2" ]; then
        echo "Czy chcesz zmienic haslo?"
        echo "t-tak n-nie"
        read d
        case "$d" in
          "t")
            echo "Podaj nowe haslo do $loginCtrl "
            echo "Haslo: "
            read -s hasloCtrl
            if [ "$hasloCtrl" == "" ]; then
              exit 3
            fi
            echo "$loginCtrl $hasloCtrl" >> hasla
            echo "Nowe haslo do $loginCtrl zostalo utworzone"
          ;;
          "n")
            exit 2
          ;;
        esac
      fi
    ;;
    *)
      echo "zly parametr"
    ;;
  esac
fi
echo $(date +%s) $loginCtrl >> informacje
fi
else
echo "$loginCtrl $hasloCtrl" >> hasla
echo "stworzone haslo dla uzytkownika $loginCtrl"
fi