- Prev
- SystemTap Beginners Guide
- Next

### ⁠3.3.3. Conditional Statements

In some cases, the output of a SystemTap script may be too large. To address this, you need to further refine the script's logic in order to delimit the output into something more relevant or useful to your probe.
Do this by using conditionals in handlers. SystemTap accepts the following types of conditional statements:

If/Else Statements
  Format:

      if (condition)
        statement1
      else
        statement2

  The `statement1` is executed if the `condition` expression is non-zero. The `statement2` is executed if the `condition` expression is zero. The `else` clause (`else` statement2) is optional. Both `statement1` and `statement2` can be statement blocks.
  ⁠

  Example 3.11. ifelse.stp

      global countread, countnonread
      probe kernel.function("vfs_read"),kernel.function("vfs_write")
      {
        if (probefunc()=="vfs_read")
          countread ++
        else
          countnonread ++
      }
      probe timer.s(5) { exit() }
      probe end
      {
        printf("VFS reads total %d\n VFS writes total %d\n", countread, countnonread)
      }

  Example 3.11, “ifelse.stp” is a script that counts how many virtual file system reads (`vfs_read`) and writes (`vfs_write`) the system performs within a 5-second span. When run, the script increments the value of the variable `countread` by 1 if the name of the function it probed matches `vfs_read` (as noted by the condition `if (probefunc()=="vfs_read")`); otherwise, it increments `countnonread` (`else {countnonread ++}`).
While Loops
  Format:

      while (condition)
        statement

  So long as `condition` is non-zero the block of statements in `statement` are executed. The `statement` is often a statement block and it must change a value so `condition` will eventually be zero.
For Loops
  Format:

      for (initialization; conditional; increment) statement

  The `for` loop is shorthand for a while loop. The following is the equivalent `while` loop:

      initialization
      while (conditional) {
         statement
         increment
      }

Conditional Operators
Aside from `==` ("is equal to"), following operators can also be used in conditional statements:

>=
  Greater than or equal to
<=
  Less than or equal to
!=
  Is not equal to

- Prev3.3.2.3. Checking Target Variable Availability
- Up
- Home
- Next3.3.4. Command-Line Arguments