getopts命令没有输入时如何回显

How to echo when there is no input in getopts command

这是放在 case 语句之前。在没有任何输入的情况下执行它仍然没有任何输出。

 while getopts :x:y:z: OPT; do
 if [ $OPT == "" ]; then
 echo "Null"
 exit 10
 fi

此外,我应该如何编写代码以执行任何 position/order 中的值? 如:

 .\project -x 120 -y 170 -z Car
 .\project -y 170 -z Car -x 120

您可以先测试是否没有传递任何参数并退出(这发生在 getopts 循环之前):

if [ $# -eq 0 ]; then
  usage # Call usage function or echo some usage message
  exit 
fi

无法强制强制参数。您可以做的是在 getopts 循环完成后测试某个值。
如果 -x 是强制选项,并且它用于设置 var 变量,请测试它是否未被 getopts 循环设置,如果是,则打印相关消息并退出:

if [ -z ${var+x} ]; then
 echo "No -x argument supplied. exiting"
 exit 10
fi

以上在 case 语句之后运行。

此外,您在 while 循环后遗漏了一个 'done',很可能是打字错误。