命令行选项与类型化变量全解析
1. 命令行选项处理基础
在处理命令行选项时,我们最初可能会想到类似下面这样的代码:
if [ $1 = -o ]; then code that processes the -o option 1=$2 2=$3 fi normal processing of $1 and $2...但这段代码存在诸多问题。首先,像1=$2这样的赋值是非法的,因为位置参数是只读的。即便合法,这种代码也会对脚本能处理的参数数量加以限制,这非常不明智。而且,如果命令有多个可能的选项,处理这些选项的代码很快就会变得混乱不堪。
幸运的是,shell 提供了shift命令来解决这个问题。shift命令的作用是将参数依次左移,例如shift 3会使$1变为原来的$4,$2变为原来的$5,依此类推。以下是使用shift处理单个选项-o和任意数量参数的代码:
if [ $1 = -o ]; then process the -o option shift fi normal processing of arguments...