Tai dar vienas patarimas, kuris gali mums padėti tam tikrose situacijose. Šį įrašą darau labiau kaip priminimą, nes žinau, kad man kažkada to vėl prireiks hahaha.
Kai mes darome scenarijų bash, o vartotojas turi įvesti IP adresą, kad vėliau mes (scenarijus) ką nors padarytume naudodami tą IP adresą, ar žinote, kur viskas gali nepavykti? ... kad vartotojas NEĮVEDA IP, nesudaro jokių nesąmonių, neišsamios IP ar pan., tie, kurie programuoja, žino, ką turiu omenyje ... nes tai turi būti užprogramuota galvojant, kad įvyks net absurdiškiausias O_O.
Būtent tam, kad išvengtumėte šios situacijos, yra funkcijos ar metodai, skirti patvirtinti IP, ty patikrinti, ar vartotojo įvedami duomenys iš tikrųjų yra IP, ar ne.
Čia aš juos palieku:
function validar_ip()
{
local ip=$ipdudosa
local stat=1
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]];
then
OIFS=$IFS
IFS='.'
ip=($ip)
IFS=$OIFS
[[ ${ip[0]} -le 255 && ${ip[1]} -le 255 && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
stat=$?
fi
return $stat
}
Kai vartotojas įveda „kažką“, tas kažkas bus kintamojo vertė abejotinas ... kodas būtų:
echo " Inserte lo que desea comprobar si es una IP."
read "ipdudosa"
Dabar mes nurodysime patvirtinti turinį ar vertę abejotinas su aukščiau nurodyta funkcija, ir tai patikrins, ar tai tikrai IP, ar ne. Jei tai yra IP, jis taip pasakys, jei ne, jis mums pasakys, kad tai nėra IP:
if validar_ip ipdudosa;
then echo "Sí, es una IP correcta :D";
else
echo "No, eso NO es una IP";
fi
Visą scenarijų palieku čia:
Funkcija patikrinti IP (pavyzdys)
Gerai atrodykite, kad pradžioje pareiškiu, kad tai: #! / bin / bash ... jei jie įdės #! / Bin / sh Tai neveiks, praleidau beveik 2 visas dienas kovodamas ir protestuodamas, nes ši funkcija neveikė, ir aš turėjau sh vietoj bash hahaha.
Na nieko daugiau nepridėti, tam yra funkcijos Pitonas, Perlas ir kitomis kalbomis ... Tiesą sakant, ši jums rodoma kalba nėra vienintelis būdas patvirtinti IP bash, bet man tai buvo labai gera, todėl ir dalinuosi 🙂
saludos
Puikus! Labai įdomu. Labai ačiū.
Ačiū, kad užsukote ir pakomentavote 😀
Puiku! dabar pabandykime pritaikyti šį „jei [[$ ip = ~ ^ [0-9] {1,3} \. [0-9] {1,3} \. [0-9] {1,3} \. [0-9] {1,3}]]; " kad aptiktų, kai neteisingai parašyta „ipv6“ ... smurtinė ... o_0 netvarka, kurią reikia įdėti į heksadecimalį ir jo 128 bitus.
Žinoma, tai hipotetinis atvejis, kurį iškėliau 🙂
Prie IPv6 ... po velnių, aš net nejuokauju ... paleisk tai ... jei net gerai nesuprantu, kas yra IPv6 (operacija), net nebandau patvirtinti IP LOL!
hehe, jei tai tiesa, siaubinga apie tai galvoti, bet požiūris egzistuoja 😛
Tai jau veikia, tiesiog paleiskite ./script, o ne sh scenarijų.
Taip, žinoma, jei padarysite „sh“ scenarijų, jis bandys jį interpretuoti naudodamas „sh“ ... turėtumėte padaryti „bash“ scenarijų, kad jis taptų tas pats kaip ./script.sh 😉
Sveiki, ačiū už pagalbą, tai buvo labai naudinga.