shift [n]
shift [variable]
*shift [n]
+shift [n]
将 $n+1 . . . 中的位置参数重命名为 $1 . . .。如果未指定 n,则假定它为 1。
argv 或 variable 的组件(如果提供)将向左移动,并丢弃第一个组件。不设置 variable 或者将其设置为具有空值是错误的。
将来自 $n+1 $n+1 . . . 的位置参数重新命名为 $1 . . .,缺省 n 为 1。参数 n 可以为任何算术表达式,此算术表达式的计算结果为小于或等于 $# 的非负数字。
在本手册页中,前面加有一个或两个 *(星号)的 ksh88(1) 命令将通过以下方式进行特殊处理:
命令完成时,该命令前面的变量赋值列表仍然有效。
在变量赋值后进行 I/O 重定向。
脚本中包含的错误会导致其中止。
如果字的后面是前面加有**的命令且字为变量赋值的格式,则使用与变量赋值相同的规则扩展这些字。这表示在 = 符号之后执行波浪号替换,并且不执行字拆分和文件名生成。
shift 是一种特殊内置 shell,用于将位置参数向左移动 n 所定义的位数或移动 1 位(如果省略了 n)。位置参数的剩余数量将随所移动的位数相应减少。
如果指定了 n,其值将作为算术表达式进行计算,以确定要移动的位数。如果移动的位数大于位置参数的数量或移动位数为负,则会出错。
ksh 中的 shift 将返回以下退出值:
成功完成。成功移动了位置参数。
出现错误。
在本手册页上,前面带一个或两个 + 的 ksh(1) 命令将专门通过以下方式进行处理:
命令完成时,该命令前面的变量赋值列表仍然有效。
在变量赋值后进行 I/O 重定向。
脚本中包含的错误会导致其中止。
它们不是有效的函数名称。
如果字的后面是前面加有 ++ 的命令且字为变量赋值的格式,则使用与变量赋值相同的规则扩展这些字。这意味着将在 = 符号之后执行波浪号替换,并且不执行字段分割和文件名生成。
有关下列属性的说明,请参见 attributes(5):
|