《System语言详解》——6. 语句种类

<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 680460288 22 0 262145 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 680460288 22 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} a:link, span.MsoHyperlink {color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:purple; text-decoration:underline; text-underline:single;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:15.6pt;} div.Section1 {page:Section1;} -->

英文原文: http://sourceware.org/systemtap/langref/Statement_types.html

译者:林永听

注:本系列文章为作者连载作品,请勿转载,否则视为侵权。

 

6. 语句种类

SystemTap 脚本语句使开发人员在函数和探针处理函数编写结构化的控制流程。一个探针事件内执行语句数目不能超过MAXACTION ,默认值为1000 ,参阅1.6 节。

6.1 break continue

Break continue 用于跳出或迭代最内层的 循环语句,如 while for foreach 语句。它们的语法和语义均与 C 语言的相同。

6.2 delete

delete 删除一个元素。

下述语句从ARRAY 组数中删除由下标元组指定的元素。删除后,元素不再存在,下次迭代将不会访问该元素。删除不存在的元素不会引致错误。

delete ARRAY[INDEX1, INDEX2, ...]

下述语法删除ARRAY 数组内的所有元素:

delete ARRAY

下述语句删除(译者注:准确地说应该是重置)SCLAR 变量的值。整数和字符串变量分别复原为0 null("") ,而统计变量复原这它们初始时的空状态。

delete SCALAR

6.3 EXP (表达式)

表达式的计算结构为字符串或整数值,最终丢弃该值(译者注:表达式不能储存计算机结果,只能将之赋给其它变量,但对表达式来的,此值被之丢掉)。

6.4 for

一般语法形式:

for (EXP1; EXP2; EXP3) STMT

for 语句类似于C 语言的for 语句for 表达式先执行初始化EXP1 ,当EXP2 非零时,执行STMT ,然后执行迭代表达式EXP3

6.5 foreach

一般语法形式:

foreach (VAR in ARRAY) STMT

foreach 语句 循环遍历全局数组 ARRAY 的每个元素,并将当前键值(译者注:即数组下标)赋给 VAR 变量。 Foreach 语句内不能对数组作任何更改。如果 VAR ARRAY 标识符后跟随一个加号( + )或减号( - ),那么迭代顺序变为下标或元素值的升序顺序或降序顺序。

下述语句的行为与第一个例子相同,不同之处是它的下标是一个键值元组(tuple of keys )。最多只能在一个VARARRAY 标识符上使用迭代顺序后缀(sorting suffix )。

foreach ([VAR1, VAR2, ...] in ARRAY) STMT

下述语句同样与第一个例子相同,不同之处是关键字limit 限制 循环 最多迭代EXP EXP 的值只在循环开始时计算一次。

foreach (VAR in ARRAY limit EXP) STMT

6.6 if

一般语法形式:

if (EXP) STMT1 [ else STMT2 ]

If 语句将EXP 的整数值与0 比较,如果非零则执行第一个STMT ,否则执行第二个STMT

if 语句和C 语言中的if 语句有相同的语法和语义。

6.7 next

next 语使包含它的探针处理函数立即退出。

6.8 ; (空语句)

一般语法形式:

statement1

;

statement2

逗号表示空语句,即不做任何事情。它作为语句间可选的分隔符,通常有助于检测语法错误和处理某种语法二义性。

6.9 return

一般语法形式:

return EXP

Return 语句从包含的函数返回EXP 的值。如果函数没有返回值,则函数体内不需要return 语句,没有返回值函数的类型称为特殊的unknown 类型。

6.10 {} ( 语句块)

语句块由方括号({} )包围起来,内有零个或多个语句。下述是它的一般语法形式:

{ STMT1 STMT2 ... }

语句块依次执行块内的每条语句。一般情况而言,语句间的分隔符和结束符不是必须的。语句块的语法和语义与C 语言的相同。

6.11 while

一般语法形式:

while (EXP) STMT

While 语句和 C 语言的有着相同的语法和语义。上述语句中,只要整数 EXP 的求值结果为非零,分析器将执行 STMT

你可能感兴趣的:(脚本,null,delete,System,语言,sorting)