Napisałem skrypt, który aktualizuje wersję na pewnym pliku. Muszę sprawdzić, czy dane wejściowe dla użytkownika są w formacie wersji, więc nie kończę dodawania numeru, który nie jest potrzebny w tych ważnych plikach. Sposób, w jaki to zrobiłem, polega na dodaniu nowej wartości version_check, w której usuwam wzór regex, a następnie sprawdzam.Jak sprawdzić ciąg wejściowy w bashu w formacie wersji (n1.n2.n3)
version=$1
version_checked=$(echo $version | sed -e '/[0-9]\+\.[0-9]\+\.[0-9]/d')
if [[ -z $version_checked ]]; then
echo "$version is the right format"
else
echo "$version_checked is not in the right format, please use XX.XX.XX format (ie: 4.15.3)"
exit
fi
To działa dobrze dla XX.XX i xx.xx.xx ale pozwala również xx.xx.xx.xx i XX.XX.XX.XX.XX etc .. więc jeśli użytkownik popełni błąd wprowadzi błędne dane do pliku. Jak mogę uzyskać sed regex, aby TYLKO umożliwić 3 pary liczb oddzielone kropką?
Słodka! to działa, dziękuję bardzo – Llanos
Nie ma za co. Nie zapomnij przyjąć odpowiedzi na zamknięcie tego pytania i odpowiedzi :) – anubhava