Shell 如何显示使用getopts时输入的所有无效选项?
我已经写了一个脚本Shell 如何显示使用getopts时输入的所有无效选项?,shell,switch-statement,parameter-passing,getopts,Shell,Switch Statement,Parameter Passing,Getopts,我已经写了一个脚本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
:
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
退出显示无效选项的脚本,我不希望脚本进一步执行。但如果我不使用它,它将以我希望的方式显示所有无效选项,但脚本将进一步执行,这是我不希望看到的
请帮忙。谢谢。使用一个helper变量,
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))
最后我确实提到了为什么我应该使用1号出口。太棒了。这正是我想要的。谢谢!✅