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',很可能是打字错误。
这是放在 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',很可能是打字错误。