'\" te .\" Copyright (c) 2007, 2011, Oracle and/or its affiliates.All rights reserved. .\" Copyright 1989 AT&T .\" Portions Copyright (c) 1982-2007 AT&T Knowledge Ventures .TH shift 1 "2011 年 7 月 12 日" "SunOS 5.11" "用户命令" .SH 名称 shift \- shell 内置函数,用于遍历 shell 的参数列表或以字段分隔的单词列表 .SH 用法概要 .SS "sh" .LP .nf \fBshift\fR [\fIn\fR] .fi .SS "csh" .LP .nf \fBshift\fR [\fIvariable\fR] .fi .SS "ksh88" .LP .nf \fB*shift\fR [\fIn\fR] .fi .SS "ksh88" .LP .nf \fB+shift\fR [\fIn\fR] .fi .SH 描述 .SS "sh" .sp .LP 将 \fB$\fR\fIn\fR\fB+1\fR . . . 中的位置参数重命名为 \fB$1\fR . . .。如果未指定 \fIn\fR,则假定它为 1。 .SS "csh" .sp .LP \fIargv\fR 或 \fIvariable\fR 的各部分(如果提供)将向左移动,并丢弃第一个部分。不设置 variable 或者将其设置为具有空值是错误的。 .SS "ksh88" .sp .LP 将来自 \fB$\fR\fIn\fR\fB+1\fR \fB$\fR\fIn\fR\fB+1 . . .\fR 的位置参数重新命名为 \fB$1 . . .\fR,缺省 \fIn\fR 为 1。参数 \fIn\fR 可以为任何算术表达式,此算术表达式的计算结果为小于或等于 \fB$#\fR 的非负数字。 .sp .LP 在本手册页中,前面加有一个或两个 *(星号)的 \fBksh88\fR(1) 命令将通过以下方式进行特殊处理: .RS +4 .TP 1. 命令完成时,该命令前面的变量赋值列表仍然有效。 .RE .RS +4 .TP 2. 在变量赋值后进行 \fBI/O\fR 重定向。 .RE .RS +4 .TP 3. 脚本中包含的错误会导致其中止。 .RE .RS +4 .TP 4. 如果字的后面是前面加有**的命令且字为变量赋值的格式,则使用与变量赋值相同的规则扩展这些字。这表示在 \fB=\fR 符号之后执行波浪号替换,并且不执行字拆分和文件名生成。 .RE .SS "ksh" .sp .LP \fBshift\fR 是一种特殊内置 shell,用于将位置参数向左移动 \fIn\fR 所定义的位数或移动 \fB1\fR 位(如果省略了 \fIn\fR)。位置参数的剩余数量将随所移动的位数相应减少。 .sp .LP 如果指定了 \fIn\fR,其值将作为算术表达式进行计算,以确定要移动的位数。如果移动的位数大于位置参数的数量或移动位数为负,则会出错。 .sp .LP \fB ksh\fR 中的 \fBshift\fR 将返回以下退出值: .sp .ne 2 .mk .na \fB\fB0\fR\fR .ad .RS 6n .rt 成功完成。成功移动了位置参数。 .RE .sp .ne 2 .mk .na \fB\fB>0\fR\fR .ad .RS 6n .rt 出现错误。 .RE .sp .LP 在本手册页上,前面带一个或两个 \fB+\fR 的 \fBksh\fR(1) 命令将专门通过以下方式进行处理: .RS +4 .TP 1. 命令完成时,该命令前面的变量赋值列表仍然有效。 .RE .RS +4 .TP 2. 在变量赋值后进行 \fBI/O\fR 重定向。 .RE .RS +4 .TP 3. 脚本中包含的错误会导致其中止。 .RE .RS +4 .TP 4. 它们不是有效的函数名称。 .RE .RS +4 .TP 5. 如果字的后面是前面加有 \fB++\fR 的命令且字为变量赋值的格式,则使用与变量赋值相同的规则扩展这些字。这意味着将在 \fB=\fR 符号之后执行波浪号替换,并且不执行字段分割和文件名生成。 .RE .SH 属性 .sp .LP 有关下列属性的说明,请参见 \fBattributes\fR(5): .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性类型属性值 _ 可用性system/core-os .TE .SH 另请参见 .sp .LP \fBcsh\fR(1)、\fBksh\fR(1)、\fBksh88\fR(1)、\fBsh\fR(1)、\fBattributes\fR(5)