Umożliwia przestrzeń przed i po numerze, _33 lub 33___, ale nie 3__3. i bez listów. 0 lub
- Get wejściowych od użytkownika aż Correct
# -- get input until Correct
unset get_num
while [[ ! ${get_num} =~ ^[0-9]+$ ]]; do
echo "Please enter in a number:"
read get_num
done
echo This is a number : ${get_num}
- Get wejście aż prawidłowe (w zasięgu)
# -- get input until Correct (within range)
unset get_num
while [[ ! ${get_num} =~ ^[0-9]+$ ]]; do
echo "Please enter in a number within range of (1-30):"
read get_num
! [[ ${get_num} -ge 1 && ${get_num} -le 30 ]] && unset get_num
done
echo This is a number withn a range : ${get_num}
- dostać wejście aż prawidłowe (w zasięgu) (pełny regex)
"Ponieważ wyrażenia regularne dotyczą tekstu, a nie liczb, dopasowanie liczby w danym zakresie wymaga nieco dodatkowej ostrożności. Nie można po prostu napisać [0-255 ], aby dopasować liczbę od 0 do 255. Chociaż jest to poprawne wyrażenie regularne, dopasowuje coś zupełnie innego. [0-255] to klasa znaków z trzema elementami: zakres znaków 0-2, znak 5 i znak 5 (ponownie). Ta klasa znaku dopasowuje pojedyncza cyfra 0, 1, 2 lub 5, podobnie jak [0125] „~ http://www.regular-expressions.info/numericranges.html
# -- get input until Correct (within range) (another way)
unset get_num
while [[ ! ${get_num} =~ ^([1-9]|1[0-9]|2[0-9]|30)$ ]]; do
echo "Please enter in a number within range of (1-30):"
read get_num
done
echo This is a number withn a range : ${get_num}
. - Get wejście i sprawdzić go tylko (bez pętli while)
# -- get input, and check it only (no while loop)
unset get_num
echo "Please enter in a number:"
read get_num
if [[ ! ${get_num} =~ ^[0-9]+$ ]] ;then
echo "${get_num} isn't a number"
else
echo "${get_num} is a number"
fi
Tak, działa, dziękuję, ale ponownie używam tej samej zmiennej, więc następnym razem, gdy się pojawi, ma wartość z ostatniego wpisu żadnych pomysłów? –
Nie bardzo rozumiem, co masz na myśli. do pustego łańcucha zanim wkroczymy w pętlę :) –
Powyższe rozwiązanie nadal akceptuje dane wejściowe, takie jak "22aa", "aa 22" lub "a23bb" .Regexp powinien zawierać początek i d koniec ciągu: podczas gdy [[! ($ number = ~^[0-9] + $)]]; do –