vc 命令

用途

用标识关键字代替已分配的值。

语法

VC [ - ] [ -t ] [ -s ] [ -c字符 ] [ 关键字=]...

描述

vc 命令将各行从标准输入复制到标准输出。 输入中的命令行和控制语句内的标志和关键字修改作为结果的输出。 vc 命令将用户声明的关键字替换为命令行上分配的值。 关键字可以在文本和控制语句内被替代。

控制语句

控制语句是以控制字符(缺省控制字符是一个 : (冒号))开始 的单个行。 控制语句提供对输入的条件处理。 允许的控制语句类型为:

:if 条件
文本
描述
:结束 只有条件为 true 时,才将 :if 语句和相匹配的 :end 之间的所有行写入 标准输出。 :if:end 语句可以嵌套。 但是,一旦条件为 false,剩余的所有嵌套 :if:end 语句都会被忽略。 有关条件语法和允许的运算符,请参阅『条件语法』一节。
:dcl 关键字 [关键字 ..] 声明指定的关键字。 所有的关键字都必须加以声明。
:asg 关键字= 将指定的值赋给指定的关键字。 :asg 语句 优先于 vc 命令行中的关键字赋值。 后面的 :asg 语句覆盖所有前面的相关关键字赋值。 已声明但没有 赋值 Value 的关键字具有空值。
: 文本 除去两个前导控制符,用它们各自的值替换关键字 s,然后将该行复制到标准输出。
:on:off 打开或关闭所有行的关键字替换。
:ctl 字符 将控制字符更改为 Character 值。
:msg 消息 以以下格式将消息写入标准错误输出: Message (n): message
where n is number of the input line on which the message appeared.
:err 消息 将错误消息写入标准错误。 vc 命令停止处理并返回退出值 1。 错误消息的格式如下:
ERROR: message
ERROR: err statement on line n (vc15)
条件语法

以下是语法项和允许的语句:

condition             ::=OR statement
                      ::=NOR statement
OR statement          ::=AND statement
                      ::=AND statement | OR statement
AND statement         ::=expression
                      ::=expression & AND statement
expression            ::=( OR statement )
                      ::=value operator value
operator value        ::= = or != or < or >
                      ::= ASCII string
                      ::= numeric string

可用的条件运算符及其含义为:

描述
= 等于
!= 不等于
&
&|
> 大于
< 小于
( ) 用于逻辑分组
NOT 只能紧跟在 if 后面出现,并且使用时反转整个条件的值。

大于号(>)和小于号(<)仅适用于无符号整数值;例如,012 > 12 为假。 所有其他 的运算符将字符串作为修改量;例如, 012 ! = 12 结果为 true。 运算符的优先级从最高到最低优先级排列如下:

  • =! = > < (所有运算符优先级相同)
  • &
  • &|

圆括号可以用于更改优先级顺序。

值必须用至少一个空格或制表符与运算符或圆括号分开。

关键字替换

关键字必须以控制语句中使用的同一控制字符开始和结束。 一个关键字 可以最多有 9 个字母数字字符,其中第一个字符必须是字母。 关键字值可以是任意 ASCII 字符串。 数字关键字 Value 是数字的无符号字符串。 值不能包含制表符或空格。

标志

描述
-a 在所有的文本行(不只是那些以两个控制字符开始的行)中,将控制字符 包围的关键字 s 用其分配的值替换。
-c字符 Character 值用作控制 字符。 Character 参数必须指定一个 ASCII 字符。
-s 不显示通常显示到标准错误的警告消息。
-t 为检测控制语句,忽略从行首开始一直到第一个制表符(包括第一个制表符)的所有字符。 如果 vc 命令查找到一个控制字符, 则它忽略直到制表符(包括制表符)的所有字符。

退出状态

本命令返回以下退出值:

描述
重大安全事件数量 成功完成。
> 0 发生错误。

示例

  1. Keyword=Value 赋值的示例:
    numlines=4
    prog=acctg
    pass4=yes
    当将文本写入标准输出时,vc 命令从用两个 控制符标记的输入文本行除去所有的控制字符和关键字。
  2. 要防止解释控制字符,在它的前面插入一个反斜杠,如以下示例所示:
    ::the :prog: program includes several of the following\:
    :prog: 关键字将替换为其值,但\:传递到标准输出,作为:(冒号)。

    以 \ (反斜杠) 开始、紧跟着控制符号的输入行不是控制行,而且除反斜杠之外被复制到标准输出。 但是,vc 命令写入以反斜杠开始并且没有控制字符跟随的行,而不作任何更改(包括初始反斜杠)。

文件

描述
/usr/bin/vc 包含 vc 命令。