位置参数 描述
$n n为数字,$0代表命令本身,$1〜$9代表第1〜9个参数,10以上的参数需要用大括号包含, 如${10}
$* 这个变量代表命令行中所有的参数,把所有的参数看成一个整体
$@ 这个变量也代表命令行中所有的参数,不过$@把每个参数区别对待
$# 这个变量代表命令行中所有参数的个数

shift 命令

shift命令可以让你向左移动位置参数。如果你执行命令:

  1. shift

那么之前保存在$2中的内容会分配给$1,保存在$3中的内容会分配给$2,以此类推。而$1中的旧值也就丢失了。执行该命令时,$#(变量总数)的值也会自动减1。
如果在没有位置参数可移动的情况下(也就是当$#已经为 0 的时候)使用shiftShell会发出错误信息:

  1. prog: shift: bad number

其中,prog是执行了不当的shift命令的程序名。

你可以在shift之后加上一个量词,一次移动多个位置,例如:

  1. shift 3

该命令等价于下面的多个 shift 命令:

  1. shift
  2. shift
  3. shift

在处理可变数量参数的时候,shift命令大有帮助。