[英]getopts is not sending my options to standard out
我开始尝试使用getopts,但遇到一些错误。 当我输入无效的选项(例如-A)时,程序输出不是必需的。
#!/bin/bash
function usage() {
echo "Usage: $0 -h [database host] -d [test database name]"
exit 1
}
while getopts “:h:d:” opt; do
case ${opt} in
h)
db_host=$OPTARG
;;
d)
test_db=$OPTARG
;;
\?)
echo "Invalid option: -$OPTARG" 1>&2
usage
exit 1
;;
:)
echo “Option -$OPTARG requires an argument.” 1>$2
usage
exit 1
;;
esac
done
shift $((OPTIND-1))
if [ -z $db_host ] || [ -z $test_db ]; then
usage
else
echo "Your host is $db_host and your test database is $test_db."
fi
程序输出示例:
./opt.sh: illegal option -- A
Invalid option: -
Usage: ./opt.sh -h [database host] -d [test database name]
因此,基本上有两个问题:
1)我想完全摆脱此第一条错误消息。 我想提供自己的错误消息。 2)为什么我的脚本没有产生“无效选项:-A”,而不仅仅是“无效选项:-”
您在getopts
的options参数周围的引号类型错误,它们是“弯引号”而不是ASCII双引号。 结果, :
不是选项的第一个字符,因此您不会得到无提示的错误报告。
更改为
while getopts ':h:d:' opt; do
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.