所以我希望能够使用-h选项来显示帮助详细信息。我有:
while getopts ":h:d:n" opt; do
case $opt in
h) help="true" >&2
;;
d) vdir="$OPTARG"
;;
n) vname="$OPTARG"
;;
\?) echo "Error: Invalid option -$OPTARG" >&2
echo "Please use -h for more information"
exit 1
;;
esac
done
# If -h was used, display help and exit
if [ "$help" = "true" ]; then
echo "Help details"
fi
当我传递-d或-n的详细信息(例如,程序-d / var / test /)时,它会很好地接收它们。但是,当我执行类似程序-h的操作时,它不起作用。
当我在case语句中执行h)选项时,我也尝试回显一行,但是,它没有得到回显。似乎当我做-h它不起作用时,我也必须发送一个值(例如程序-h" test")并且它会做什么。
如果我执行类似程序-p的操作,它会根据需要显示错误消息,-h只会执行任何操作。
答案 0 :(得分:1)
根据评论,-h没有值,所以不应该有:在它之后,所以该行应该是:
while getopts "hd:n:" opt; do
删除初始:会出错。没有:在h之后意味着它不需要值,而在d和n之后意味着它们需要一个值。