次のシェル スクリプトは 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) Copyright (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) リリース (sparc-sun-solaris2.10) Copyright (C) 2004 Free Software Foundation, Inc.
./regextest.sh -s 10.2.4.3
Invalid
GNU bash、バージョン 3.2.51(1) リリース (sparc-sun-solaris2.10) Copyright (C) 2007 Free Software Foundation, Inc.
./regextest.sh -s 10.2.4.3
Invalid
ありがとう