aboutsummaryrefslogtreecommitdiffstats
execline: the if command

execline
Software
skarnet.org

The if program

if performs conditional execution.

Interface

In an execlineb script:

     if [ -X ] [ -n ] [ -t | -x exitcode ] { prog1... } prog2...
  • if reads prog1... in a block. It forks and executes it, then waits for it to complete.
  • If prog1 crashes, if prints an error message then exits 128 plus the number of the signal that killed prog1.
  • If prog1 exits with a non-zero code, if exits with an approximation of that code.
  • Else if execs into prog2.

Options

  • -X : treat a crash of prog1 as a non-zero ("false") exit. This is mostly useful in combination with -n.
  • -n : negate the test. If prog1 exits true, then if will exit 1; else it will exec into prog2.
  • -x exitcode : if if needs to exit, it will exit exitcode instead of whatever else it would have exited.
  • -t : if if needs to exit, it will exit 0. This is equivalent to -x 0.

Notes

  • if will exit if prog1... exits false. To use it in an execline script that must run prog3... no matter the result of the test, use a foreground wrapper:
     foreground { if { prog1... } prog2... } prog3... 
    (in execlineb syntax)
  • if prog1... "" prog2... is equivalent to sh -c 'prog1... && exec prog2...'.