E
-eraz-
Tripel-As
Ich suche nach einem Codestück, dass eine IP Adresse auf deren Gültigkeit prüft. Tante Google hat folgendes gefunden:
Funktioniert super, hab nur nicht ganz verstanden wie es genau funktioniert. Vielleicht möchte mir jemand helfen folgende Unklarheiten zu beseitigen
Code:
#!/bin/bash
ip=$1
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
if [ $stat = 0 ]; then
echo "ip ok"
else
echo "ip nicht ok"
fi
- Warum steht die if Abfrage in doppelten eckigen Klammern, was bewirkt das?
- Warum steht am Ende von "~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" ein Dollar Zeichen? Ist das eine Kommandosubstitution?
- Wie funktionieren die Variablen OIFS und IFS? Ich sehe nicht das die irgendwo eingesetzt werden??
- Die Zahl in der einzelnen Array Variable wird ebenfalls in eckigen Klammern abgefragt und ohne if davor. Warum funktioniert das überhaupt?