如何显示使用 getopts 时输入的所有无效选项?
How to show ALL the invalid options entered when getopts is used?
我写了一个脚本myscript
:
while getopts "t:" opt; do
case ${opt} in
t )
target=$OPTARG
;;
* )
echo "Invalid option: $OPTARG requires an argument"
exit 1;
;;
esac
done
shift $((OPTIND -1))
如果我输入像
这样的输入
$ myscript -eio
它只显示
Invalid option: e
我希望它显示我传递的所有无效选项,例如:
Invalid option: e
Invalid option: i
Invalid option: o
我已经使用 exit 1
退出显示无效选项的脚本,我不希望脚本执行任何 further.But 如果我不使用它,它将显示所有我想要的无效选项但是,脚本将进一步执行,这是我不想要的。
请帮忙。谢谢。
使用辅助变量,invalid
记录任何无效选项。选项解析循环完成后,对其进行测试。
invalid=false
while getopts "t:" opt; do
case ${opt} in
(t)
target=$OPTARG
;;
(*)
echo "Invalid option: $OPTARG requires an argument"
invalid=true
;;
esac
done
case $invalid in
(true) exit 1;;
esac
shift $((OPTIND -1))
我写了一个脚本myscript
:
while getopts "t:" opt; do
case ${opt} in
t )
target=$OPTARG
;;
* )
echo "Invalid option: $OPTARG requires an argument"
exit 1;
;;
esac
done
shift $((OPTIND -1))
如果我输入像
这样的输入$ myscript -eio
它只显示
Invalid option: e
我希望它显示我传递的所有无效选项,例如:
Invalid option: e
Invalid option: i
Invalid option: o
我已经使用 exit 1
退出显示无效选项的脚本,我不希望脚本执行任何 further.But 如果我不使用它,它将显示所有我想要的无效选项但是,脚本将进一步执行,这是我不想要的。
请帮忙。谢谢。
使用辅助变量,invalid
记录任何无效选项。选项解析循环完成后,对其进行测试。
invalid=false
while getopts "t:" opt; do
case ${opt} in
(t)
target=$OPTARG
;;
(*)
echo "Invalid option: $OPTARG requires an argument"
invalid=true
;;
esac
done
case $invalid in
(true) exit 1;;
esac
shift $((OPTIND -1))