我的getopts函数正常工作时出现问题。应该发生的是,如果没有给出任何补偿,那么一切都是默认的。我有四个选项,如下所示:getopts可选,没有可选参数
-b需要两个2048或4096的其中一个值的其他用法。
-c需要路径的其他用法值。
-p需要路径,否则使用
-h这的确需要即使它确实忽略该值的价值。
但是,如果我放弃选项,它不会让我继续。所以,我需要能够把0到4
msg=""
nginx_ssl_conf=/etc/nginx/nginx-ssl.conf
BIT_SIZE=2048
isHardened=false
hardened_ciphers="'ECDH+AESGCM256:DH+AESGCM256:ECDH+AES256:SH+AES256:RSA+AESGCM256:RSA+AES256:!aNULL:!MD5:!kEDH';"
DHEC_path=$STORAGE_ROOT/ssl/dhparam.pem
# Usage info
usage() {
cat << EOF
Usage: ${0##*/} [-h] [-p DIR_DHEC_KEY] [-b BIT_SIZE] [-c DIR_NGINX_SSL]...
This script generates and enables DHEC for Nginx. Defaulted to 2048 key.
Hardened mode will generate 4096 key and the following cipher suites:
'ECDH+AESGCM256:DH+AESGCM256:ECDH+AES256:SH+AES256:RSA+AESGCM256:RSA+AES256:!aNULL:!MD5:!kEDH'
-h Enable hardened ciphers and 4096 bit key.
-p Specify dir to generate the DHEC key.
-c Specify dir nginx ssl conf is.
-b Specify the bit size to generate.
EOF
exit 1
}
while getopts "::b:h:::p::c" opt ; do
case "${opt}" in
b)
BIT_SIZE=${OPTARG}
if [ -z "${b}"]; then
usage
fi
;;
h)
isHardened=true
BIT_SIZE=4096
;;
p)
DHEC_path=${OPTARG}
;;
c)
nginx_ssl_conf=${OPTARG}
;;
*)
usage
;;
esac
done
shift $((OPTIND-1))
bash'getopts'不会执行可选参数,据我所知。请参阅http://mywiki.wooledge.org/BashFAQ/035(以及链接的getopts教程),以获取处理参数的各种方法。 – 2014-09-21 01:22:13