ダッシュスクリプト内のIPアドレスを検証しようとしています。このようlinuxjournalダッシュ(in bash)でipを検証する
のようにbashのと同じことを達成するための多くの方法が基本的には何んである私を見つけたこれを使用して比較ですです:
if [[ $ip =~ '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' ]]; then
do something
fi
はダッシュで同じを取得する方法はありますか?
UPDATE:は、これは私が必要なものを行い、最終的なスクリプトです:
#In case RANGE is a network range (cidr notation) it's splitted to every ip from
# that range, otherwise we just keep the ip
if echo $RANGE | grep -E -q '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\/[0-9]{1,2}$'; then
IPS=`prips $RANGE -e ...0,255`
if [ "$?" != "0" ] ; then
echo "ERROR: Not a valid network range!"
exit 1
fi
elif echo $RANGE | grep -E -q '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$'; then
IPS="$RANGE"
else
echo "$RANGE no is not a valid IP address or network range"
exit 1
fi
IPアドレスはちょうど32ビットの数字です。 dotted-quad記法を求めていますが、10進法と16進法も有効です。 '0x1020304'と' 16909060'は '1.2.3.4'と同じです。 – ghoti
私は人間のエラーの検証だけが必要です。私と私の同僚以外の誰もこのスクリプトを使用しないので、私は表記法を選択してそれに固執することができます。 – user322049
あなたの最終的な正規表現に関しては、少し短く表現することもできます: '^([0-9] {1,3} \。){3} [0-9] {1,3} \/[0-9] {1,2} $ ' – ghoti