Nowe posty

Autor Wątek: If, grep  (Przeczytany 2856 razy)

Syriusz.crux

  • Gość
If, grep
« dnia: 2013-04-08, 18:12:04 »
Witam,
mam problem z zadaniem.
Musze sprawdzic poprawnosc daty, mam taki kod:

!/bin/bash
echo "Podaj date"
read DATA
WYNIK=$DATA | grep -E "^[0-9]{4}-(1[0-2]|0[1-9])-(3[0-1]|[1-2][0-9]|0[1-9])$"
if [[ "$DATA"=="$WYNIK" ]]; then
    echo "OK"
    else
    echo "NIE"
fi
Jednak za kazdym razem wynik jest poprawny, np jak wpisze 2000-05-123, otrzymuje wiadomosc ze jest OK a powinno byc ze nie jest poprawny ze wzgledu na znak $. Czy ktos moglby mi pomoc w tym zadaniu?
Proszę o pomoc
Pozdrawiam

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
If, grep
« Odpowiedź #1 dnia: 2013-04-08, 20:48:05 »
Błąd przy "WYNIK=..." i przy test-owaniu stringów w if-ie. Oraz błąd w shebangu: #!
#!/bin/bash
read -p "Podaj date: " DATA
WYNIK=$( echo $DATA | grep -E "^[0-9]{4}-(1[0-2]|0[1-9])-(3[0-1]|[1-2][0-9]|0[1-9])$" )
if [ "$DATA" = "$WYNIK" ]; then
    echo "OK"
else
    echo "NIE"
fi
A sam Bash obsługuje sprawdzanie regexpów:
#!/bin/bash
read -p "Podaj date: " DATA
if [[ "$DATA" =~ ^[0-9]{4}-(1[0-2]|0[1-9])-(3[0-1]|[1-2][0-9]|0[1-9])$ ]]; then
    echo "OK"
else
    echo "NIE"
fi
Przy okazji: read ma opcje do wyświetlania prompta.

Syriusz.crux

  • Gość
If, grep
« Odpowiedź #2 dnia: 2013-04-08, 21:20:12 »
Dzieki Ci wielkie ultr.