以下 shell 脚本适用于 Linux,但不适用于 Solaris,
#!/usr/bin/bash
while getopts ":s:" opt; do
case $opt in
s)
# Check IP against regex
if [[ "$OPTARG" =~ "\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b" ]]; then
IP=$OPTARG
else
echo "Invalid"
exit 1
fi
;;
esac
done
Linux:
GNU bash,版本 3.2.25(1)-release (x86_64-redhat-linux-gnu) 版权所有 (C) 2005 Free Software Foundation, Inc.
$ ./regextest.sh -s 10.2.4.3
$
$ ./regextest.sh -s 10.notaIP.10
Invalid
这是预期的结果。
但是在 Solaris 上,
GNU bash,版本 3.00.16(1)-release (sparc-sun-solaris2.10) 版权所有 (C) 2004 Free Software Foundation, Inc.
./regextest.sh -s 10.2.4.3
Invalid
GNU bash,版本 3.2.51(1)-release (sparc-sun-solaris2.10) 版权所有 (C) 2007 Free Software Foundation, Inc.
./regextest.sh -s 10.2.4.3
Invalid
谢谢