我的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