我想构建一个命令args,如下所示:
$ command <args> <parameter>
$ cut -d ' '
构建命令的代码是这样写的:
function command(){
if [ "$#" -gt 0 ]; then
while [ "$#" -gt 0 ]; do
case "$1" in
'-t'|'--type')
type_parameter=$2
shift 2
;;
* )
shift 1
;;
esac
done
fi
}
我想检测一下,如果在特殊的<args>
之后没有任何参数存在,那么我可以编写一个错误处理程序代码。
$ command -t 123 # this is the input value I want.
good input!!
$ command -t # I want to detect this situation happen.
wrong input!!
但现在我遇到了错误:
$ command -t
command:shift:101: shift count must be <= $#
我不知道如何解决这个问题,有什么方法可以完美地处理或避免它吗?
只需测试参数的数量。你可以做一些类似的事情,而不是无条件地做shift 2
if (( $# >= 2 ))
then
shift 2
else
echo "You need to provide an argument to -z!"
exit 21
fi
这将允许您打印自己的错误消息。当然,如果您不想将丢失的选项参数视为错误,您也可以脱离循环(因为您知道无论如何都不会留下任何参数(。