如何检查 bash 中是否传入了一个空的命名参数?
How can I check if an empty named parameter has been passed in in bash?
所以我希望能够使用 -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/)时,它会很好地接收它们。但是,当我执行类似 program -h 的操作时,它不起作用。
当我在 case 语句中执行 h) 选项时,我也尝试回显一行,但是,它没有得到回显。似乎当我执行 -h 时它不起作用,我还必须发送一个值(例如程序 -h "test"),它会执行所需的操作。
如果我执行类似程序 -p 的操作,它会按要求显示错误消息,但 -h 什么都不做。
根据评论,-h 没有值,所以它后面不应该有 :,所以该行应该是:
while getopts "hd:n:" opt; do
删除首字母 : 会出错。在 h 之后没有 : 意味着它不需要值,而在 d 和 n 之后有 : 意味着它们需要一个值。
所以我希望能够使用 -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/)时,它会很好地接收它们。但是,当我执行类似 program -h 的操作时,它不起作用。
当我在 case 语句中执行 h) 选项时,我也尝试回显一行,但是,它没有得到回显。似乎当我执行 -h 时它不起作用,我还必须发送一个值(例如程序 -h "test"),它会执行所需的操作。
如果我执行类似程序 -p 的操作,它会按要求显示错误消息,但 -h 什么都不做。
根据评论,-h 没有值,所以它后面不应该有 :,所以该行应该是:
while getopts "hd:n:" opt; do
删除首字母 : 会出错。在 h 之后没有 : 意味着它不需要值,而在 d 和 n 之后有 : 意味着它们需要一个值。