vc - 版本控制
vc [-a] [-t] [-c char] [-s] [keyword=value... keyword=value]
该命令已过时,在下一个发行版中将被删除。
vc 命令将在其参数和标准输入中遇到的“控制语句”的控制下,将标准输入中的行复制到标准输出。在执行复制操作的过程中,用户声明的 keyword 可能由其字符串 value 所代替(当它们出现在纯文本和/或控制语句中时。)
将标准输入中的行复制到标准输出是有条件的,具体基于在控制语句中或由 vc 命令参数指定的关键字值(在控制语句中)的测试。
控制语句是以控制字符开头的一行,通过 –t 关键字(请参见下文)修改的除外。缺省控制字符是冒号 (:),通过 –c 关键字(请参见下文)修改的除外。以反斜杠 (\) 开头,后跟控制字符的输入行并非控制行,并将在删除反斜杠后复制到标准输出。将完全复制以反斜杠开头,后跟非控制字符的行。
关键字由 9 个或 9 个以下的字母数字组成;第一个字符必须为字母。值是可使用 ed 创建的任意 ASCII 字符串;数值是无符号的数字字符串。关键字值可能不含空格或制表符。
如果版本控制语句中的关键字被控制字符括起,则将使用值来替换关键字。–a 关键字(请参见下文)会强行替换所有文本行中的关键字。可将未解释的控制字符包括在值中,方法是在控制字符之前加上 \。如果需要文本 \,则同样需要在它之前加上 \。
支持以下选项:
在所有文本行中(并非仅在 vc 语句中),强行使用所分配的值替换由控制字符括起的关键字。
为检测控制语句,会忽略从行开始到(含)第一个制表符之间的所有字符。如果找到控制语句,则会放弃到(含)制表符的所有字符。
指定将用于 ":" 缺省值位置的控制字符。
抑制通常以诊断输出格式输出的警告消息(非错误)。
vc 识别以下版本控制语句:
声明关键字。必须声明所有关键字。
向关键字指定值。asg 语句将覆盖 vc 命令行上的对应关键字分配以及与该关键字相关的所有之前的 asg 语句。已经声明但尚未分配值的关键字拥有空值。
跳过标准输入行。如果条件为 true,那么会将 if 语句和匹配 end 语句之间的所有行复制到标准输出。如果条件为 false,那么会放弃所有中间行,包括控制语句。注:仅为维护相应的 if-end 匹配而识别中间 if 语句和匹配 end 语句。
条件的语法为:
::= [ ``not'' ] <or>
::= <and> | <and> ``|'' <or>
::= <exp> | <exp> ``&'' <and>
::= ``('' <or> ``)'' | <value> <op> <value>
::= ``='' | ``!='' | ``<'' | `` >''
::= <arbitrary ASCII string> | <numeric string>
可用的运算符及其含义为:
等于
不等于
和
或
大于
小于
用于逻辑分组
仅可能立即发生在 if 之后,如果出现,颠倒整个条件的值
> 和 < 仅对无符号整数值进行操作(例如,: 012 > 12 为 false)。所有其他运算符都将字符串视为参数(例如,: 012 != 12 为 true)。
运算符的优先级(从最高到最低)为:
所有的优先级相同
括号可用于更改优先级顺序。
必须至少使用一个空格或制表符来将值与运算符或括号分隔开。
替换将复制到标准输出的行上的关键字。将行复制到输出文件之前会删除两个前导控制字符,并会使用相应值来替换由控制字符括起的关键字。此操作独立于 –a 关键字。
允许或禁止所有行上的关键字替换。
将控制字符更改为 char。
在诊断输出上列显 message。
列显后跟以下内容的 message:
ERROR: err statement on line ... (915)
作为诊断输出。vc 会停止执行,并返回退出代码 1。
有关下列属性的说明,请参见 attributes(7):
|