AIX命令参考大全,卷 1,a - c - bs 命令

[ 页的底部 | 上一页 | 下一页 | 目录 | 索引 | 法律条款 ]

AIX命令参考大全,卷 1,a - c

bs 命令

用途

编译并解释中小型程序。

语法

bsFile Arguments ] ]

描述

bs 命令是用于交互式程序开发和调试的编译器和解释器。为了简化程序测试,它使形式数据声明和文件操作最小化,允许每次一行的调试,并提供跟踪、转储工具和运行时错误消息。

可选的参数 File 指定所创建的以及编译器从标准输入读取之前读取的程序语句文件。从标准输入输入的语句通常立即就被执行(请参阅 compileexecute 语句语法)。缺省情况下,编译从 File 读取的语句用于以后的执行。

除非最终运算符是变量的赋值,否则会显示即时表达式语句的结果。

附加命令行 Arguments 可使用内置函数 argnarg 来传递至程序。

程序行必须符合以下格式之一:

语句
标签语句

仅当解释器正在编译语句时,它会接受带有标签的语句。标签是后紧跟冒号的名称。标签和变量可以具有相同的名称。如果一行的最后一个字符是 \ (反斜杠),则语句会在余下的物理行上继续。

语句由表达式或跟有零或更多表达式的关键字组成。

注:在国际环境中使用范围表达式时,为了避免不可预见的结果,请使用字符类表达式而非标准范围表达式。

语句语法

break 退出最内层 forwhile 循环。
clear 从内存清除符号表并除去已编译的语句。clear 总是被立即执行。
compile [Expression] 导致编译后继语句(覆盖立即执行缺省)。对可选的 Expression 进行求值并将它用作进一步输入的文件名。后面的情况中,符号表和内存首先被清除。compile 总是被立即执行。
continue 将控制传送至当前 forwhile 循环的循环继续测试。
dump [Name] 显示每个全局变量的或,有选择地,Named 变量的名称和当前值。在错误或中断之后,dump 显示最后语句的编号以及(有可能)用户函数跟踪。
exit [Expression] 返回至系统级别。Expression 作为进程状态被返回。
execute 更改至立即执行方式(按“中断”键有相同功能)。该语句不会引起已存储语句的执行(请参阅 run)。
for 在命名的变量的控制下使用以下语法之一重复地执行一个语句或一组语句:

for name=Expression Expression statement
next

或者

for name=Expression Expression
statement . . . 
next

或者

for Expression, Expression, Expression statement
next

或者

for Expression, Expression, Expression
statement . . .
next

第一个格式指定单个语句,其中变量呈现为第一个表达式的值,然后每次循环都被逐一增加,直到它超过第二个表达式的值。可以使用第二个格式做同样的事情,但也可以指定一组语句。

第三个格式要求紧跟有测试表达式(比如 true to continue)和循环继续操作表达式的初始表达式。可以使用第四个格式做同样的事情,但也可以指定一组语句。在第三个和第四个格式中,使用逗号来分隔表达式。

fun 使用以下语法定义用户写函数:

fun f ([a. . . ]) [v. . . ]
statement . . . 
nuf

f 指定函数名称,a 指定任意参数,而 v 为用户写函数标识任意本地变量。可指定多达 10 个参数和本地变量;然而,它们不能是阵列或不能与 I/O 功能相关联。不能嵌套函数定义。

freturn 发出"用户写函数失败"信号。不带有问号,freturn 返回零。(请参阅一元问号运算符(?).) 带有问号,freturn 发送至带问号的表达式,可能绕过中间函数返回。
goto Name 将控制传递至具有 Name 的匹配标签的已编译语句。
ibase n 将输入基数设置为 n。对于 n,仅对值 810(缺省值)和 16 提供支持。 十六进制值 10-15 作为字母字符 a-f 输入 当十六进制数字以字母字符作为开头时,会要求具有前导数字(例如,f0a 必须以 0f0a 的形式输入)。ibase 总是被立即执行。
if 以下列语法之一执行语句:

if Expression statement
[else
statement . . . ]
fi

或者

if Expression
statement . . .
 [else
statement . . . ]
fi

第一个格式指定单个语句而第二个格式指定要继续使用的一组语句(如果该表达式的求值相当于非零)。字符串 0 和“”(空)相当于零。

第二个格式中,在未执行第一组语句的情况下,可选的 else 允许执行另一组语句。只有 if 语句可以在 else 的同一行上。fis 只能放在与另一个 fi 相同的行上。可将 elseif 结合为 elif。可以使用单个 fi 关闭 if . . . elif . . . [else . . . ] 序列。

include Expression Expression 相当于包含程序语句的文件名。这样的语句成为正在编译的程序一部分。include 总是被立即执行。不要嵌套 include 语句。
obase n 将输出库设置为 n。对于 n,仅值 8、10(缺省值)和 16 是受支持的十六进制值 10 到 15 作为 a-f 字母字符输入当十六进制数字以字母字符作为开头时,会要求具有前导数字(即,f0a 必须以 0f0a 的形式输入)。与 ibase 一样,obase 总是被立即执行。
onintr 使用以下语法之一提供中断的程序控制:

onintr Label

或者

onintr

第一个格式中,控制传递至给出的 Label,就好像执行 onintr 时,已经执行了 goto。每次中断后,onintr 语句的作用被清除。第二个格式中,按“中断”结束 bs 程序。

return [Expression] Expression 进行求值并将结果作为函数调用的值传递回来。如果不提供表达式,函数返回的是零。
run 将控制传递给编译的第一个语句。复位随机号码生成器。如果文件包含 run 语句,它应该是最后的语句;run 总是被立即执行。
stop 停止已编译语句的执行并返回至立即方式。
trace [Expression] 控制函数跟踪。如果不提供 Expression 或者如果它求值为零,会关闭跟踪。否则,会写下用户函数调用/返回记录。每次返回都逐一递减 trace 表达式的值。
while 在命名的变量的控制下使用以下语法之一重复地执行一个语句或一组语句:

while Expression statement
next

或者

while Expression
statement . . . 
next

while 语句同 for 语句很相似,除了前者仅给出循环继续的条件表达式。

!cmd 运行命令然后将控制返回至 bs 程序。
# Comment 插入一个注释行。

表达式语法

Name 指定变量或者标签(当紧跟有冒号时)。名称由可选择地紧跟有字母和数字的字母(大小写均可)组成。只有名字的前六个字符是有意义的。除了 fun 语句中本地声明的名称,所有名称都是全局的。名称可以呈现为数字型(双倍浮点)值或者字符串值或与输入/输出相关联(请参阅内置函数 open)。
Name([Expression[, Expression] . . . ]) 调用函数 Name,并将括号中的参数传递给它。除非内置函数,Name 必须在 fun 语句中被定义。函数参数由值来传递。
Name[Expression[, Expression] . . . ] 引用数组或表(请参阅内置函数 table)。对于数组,将每个表达式截断为整数并用作名称的说明符。最终的数组引用在语法上同名称相同;[1,2] 与 [1] [2] 的意义是相同的。被截断的表达式必须是 0 和 32,767 之间的值。
Number 代表常量数字值。该数字可以表达为整数、十进制或科学符号(可以包含数字、可选的十进制点和跟有可能的带符号指数的可选的 e)。
String 代表由 ""(双引号)定界的字符串。在字符串中,可以把 \ (反斜杠) 用作转义字符,它允许双引号 ( \")、换行字符 ( \n)、回车 ( \r)、退格 ( \b) 和跳格 ( \t) 字符出现在一个字符串中。如果不是紧跟有这些特殊字符, \ 只表示自己。
(Expression) 改变求值的正常顺序。
(Expression, Expression[, Expression] . . . ) [Expression] 指定把在圆括号外加方括号的表达式用作圆括号内表达式列表的下标。列表内容从左开始编号,以零为开始。如果比较为真,则以下表达式的值也为真(True):

(False, True) [a == b]
Expression Operator Expression 在应用运算符之前,将操作数转换成数字形式,除非运算符是个赋值、级连或关系运算符。

一元运算符

? Expression 测试 Expression 是否成功,而非它的值。此问号运算符有助于测试:
  • 文件末尾
  • eval 内置函数的结果
  • 从用户写函数返回(请参阅 freturn

询问陷阱(例如,文件末尾)会引起至最近询问的立即转换(可能跳过赋值语句或插入函数级别)。

- Expression Expression 求反。
++ Name 使变量(或数组引用)的值逐一递增。
-- Name 使变量的值逐一递减。
! Expression 指定 Expression 的逻辑非。

注:一元运算符把空字符串当作零。

二进制运算符(递增顺序)

= 指定赋值运算符。左边的操作数必须是名称或数组元素。它会获取右边操作数的值。赋值从右绑定至左;所有其它运算符从左绑定至右。
_ 指定级连运算符。(它是加下划线的字符。)
& | 指定逻辑和、逻辑或。

仅当两个参数都是非零(真)时,

Expression & Expression

的结果是 1(真);如果其中一个或两个参数都是 0(假),它的结果是 0(假)。

如果一个或两个表达式都为非零(真),

Expression | Expression

的结果是 1(真);仅当两个表达式都是 0(假)时,它的结果是 0(假)。两个运算符都把空字符串作为零。

< <= > >= == != 指定关系运算符:
  • < 表示小于
  • <= 表示小于或等于
  • > 表示大于
  • >= 表示大于或等于
  • == 表示等于
  • != 表示不等于

如果指定的关系为真(True),关系运算符返回 1;否则,它们返回 0(假)。同一级别的关系运算符可扩展为以下: a>b>ca>b& b>c 是相同的。如果两个操作数都是字符串,会进行字符串比较。该比较是基于在环境变量 LC_COLLATE 中指定的整理序列。本地语言支持概述包含有关此环境变量的更多信息。

+ - 指定加和减。
* / % 指定乘、除和余数。
^ 指定乘幂。

注:二元运算符把空字符串作为零。

处理自变量的函数

arg(i) 返回处在当前函数调用级别的第 i- 个实际自变量的值。在零级别,arg 返回第 i- 个命令行自变量。例如,arg(0) 返回 bs
narg( ) 返回已通过的自变量数。在零级别,它返回命令行自变量计数。

数学函数

abs(x) 返回 x 的绝对值。
atan(x) 返回 x 的反正切。
ceil(x) 返回不小于 x 的最小整数。
cos(x) 返回 x 余弦。
exp(x) 返回升至 x 的乘幂的 e。
floor(x) 返回不大于 x 的最大整数。
log(x) 返回 x 的自然对数。
rand( ) 返回 0 和 1 之间整齐分布的随机数字。
sin(x) 返回 x 的正弦。
sqrt(x) 返回 x 平方根。

字符串函数

size(s) 返回 s 的大小(以字符为长度)。
bsize(s) 返回 s 的大小(以字节为长度)。
format(f, a) 返回 a 的已被格式化的值,f,该值是 printf 子例程样式中的格式规范字符串。仅使用 %...f%...e%...s 格式。
index(x, y) 返回包含与 y 中的任何字符相匹配的字符在 x 中的第一个位置的数字。如果没有找到匹配,则返回 0。对于 2 字节扩展字符,则返回第一个字节的位置。
trans(s, f, t) 将源字符串 s 中与 f 中的字符相匹配的字符转换成 t 中具有相同位置的字符。未出现在 f 中的源字符被无更改地复制为已转换的字符串。如果字符串 ft 长,则与 f 的超出部分中所找到的字符相匹配的源字符不会出现在已转换的字符串中。
substr(s, Start, Length) 返回由字符中的 Start 位置和 Length 定义的 s 的子串。
match(String, Pattern)
mstring(n)
返回 string 中与 pattern 相匹配的字符数。字符 ., *, $, [, ], ^ (当处于方括号内时), \ (和 \) 具有以下特殊含义:

注:有关此特殊符号的更详细的说明,请参阅 ed
.
匹配除了换行字符的任何字符。
*
匹配零或在它之前的模式元素的更多具体值。例如,.* 匹配零或除了换行字符之外任何字符的更多具体值。
$
指定行的末尾。
[.-.]
匹配指定范围([.-.])中的任一字符或列出([ . . . ]),包括第一个和最后一个字符。
[^ .-.]
[^ . . . ]
与除了换行字符以外的任何字符和一个范围或列表内的任何剩余字符相匹配。弯曲符号 (^) 仅在其紧跟左方括号时才具有特殊含义。
[].-.]
[] . . . ]
匹配 ] 或列表中的任何字符。如果右方括号是某一列表中的第一个字符(如果有,跟在最初的 ^ 之后),它不会终止这样的列表。
\( . . . \)
标记子串并与之严格匹配。它的模式必须从字符串的开头起相匹配,且是最长的可能字符串。考虑,例如:

match ('a123ab123',".*\([a-z]\)") = 6

该示例中,.* 与 a 123a(a-z 范围内的字符前的最长字符串)相匹配; \ ([a-z]\) 匹配 b,并给出字符串中总共相匹配的六个字符。在诸如 [a-z] 的表达式中,根据当前整理的序列,减号意指“到”。

整理的序列可以为在字符范围中的使用定义等价类。有关整理序列和等价类的更多信息,请参阅“International Character Support Overview”。

mstring 函数在最后调用中将第 n 个子串返回给 matchn 只能处于 1 和 10(包括 1 和 10) 之间)。

文件处理函数

open(Name, File, Mode)

close(Name) 指定名称、文件类型和文件方式。Name 必须是合法的变量名(作为字符串通过)。在 close 之后,此名称变成一般变量。对于 open,File 可以是以下各项之一:
  • 标准输入:0
  • 标准输出:1
  • 错误输出:2
  • 代表文件名称的字符串
  • 以 ! 开头的字符串,代表了要运行的命令(使用“sh -c”)

必须用 r(代表读取)、w(代表写入)、W(代表不带换行字符写入)或 a(代表添加)来指定 Mode。初始关联是:

  • open ("get", 0, "r")
  • open ("put", 1, "w")
  • open ("puterr", 2, "w")
access(p, m) 执行访问子例程。参数 p 是文件的路径名;m 是表示请求的访问方式的位模式。如果系统请求被许可,此函数返回 0,反之则是 1。
ftype(s) 返回表示文件类型的单个字符:f 代表常规文件,p 代表 FIFO(命名管道),d 代表目录,b 代表特殊块而 c 代表特殊字符。

表函数

table(Name, Size) 指定可被关联访问的一维的数组。“下标”(称作键)是字符串(被转换的数字)。Name 必须是 bs 变量名(作为字符串通过)。Size 设置要分配的元素的最小数量。表一旦溢出,bs 就会写错误消息。
item(Name, i)
key( ) 相继的而非键值的行进顺序访问表元素。项函数在哪里访问值,键函数访问前一个项调入的“下标”。不要引用 Name

由于还未定义实际表的大小,问号运算符应该被用于检测表尾;例如:

table("t",100)

               
.
.
.
#If word contains "parity", the following expression
#adds one to the count of that word:
++t[word]
.
.
.
#To display the key/value pairs:
for i = 0, ? (s = item (t, i)), ++i if key( ) put = key
( )_":"_s
iskey(Name, Word) 测试键字是否在表名称中存在并且返回 1(真),反之则返回 0 (假)。

其它函数

eval(string) 指定将字符串参数作为表达式求值。此函数可方便地将数字字符串转换成数字。eval 也能被用作间接的未加工的形式,如同以下:

name = "x,y,z"
eval("++"_name)

它增加了变量 "x,y,z"。此外,当 eval 前有 ?(问号)时,可以控制 bs 错误条件。示例:

?eval ("open(\"X\",\"XXX\", \"r\")")

如果没有名为“XXX”的文件,返回值零(而不是停止程序)。以下内容将 goto 执行到标签“L:”(如果它存在):

label = "L:"
if! (?eval ("goto"_label))puterr="no label"
plot(request, args) 产生有关被 tplot 命令识别的设备的输出。一些请求不能被应用于所有绘图仪。除了 0 和 12,所有请求都可通过将字符经由管道传递至 tplot 来实现。

调用请求如下:

plot(0, term)
使进一步绘图输出通过管道被传入具有 -T标志的 tplot
plot(1)
擦除绘图仪。
plot(2, string)
string 为当前点进行标号
plot(3, x1, y1, x2, y2)
(x1, y1) 和 (x2, y2) 之间画线。
plot(4, x, y, r)
以圆心(x, y)和半径 r 画圆。
plot(5, x1, y1, x2, y2, x3, y3)
以圆心 (x1, y1) 及终止点 (x2, y2) (x3, y3) 画弧形(逆时针方向)。
plot(6)
不实现。
plot(7, x, y)
(x, y) 标记当前点。
plot(8, x, y)
从当前点画线至 (x ,y)
plot(9, x, y)
(x, y) 处画点。
plot(10, string)
将线方式设置为字符串
plot(11, x1, y1, x2, y2)
(x1, y1) 作为绘图区域的左下角而 (x2, y2) 作为绘图区域的右上角。
plot(12, x1, y1, x2, y2)
使后续的 x(y) 坐标在进行绘画之前与 x1 (y1) 相乘,然后被添加至 x2 (y2)。初始缩放法为 plot(12, 1.0, 1.0, 0.0, 0.0)。
last ( ) 以立即方式返回最近计算的值。

示例

要执行 bs 命令并将结果导向称为输出的文件,输入:

bs < input.n > output

或者

bs input.n > output

相关信息

ksh 命令。

access 子例程、printf 子例程。

AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 National Language Support Overview for Programming

[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 | 法律条款 ]