execline
Software
skarnet.org
 The tryexec program 
tryexec executes into a command line, with a fallback.
 Interface 
 In an execlineb script:
     tryexec [ -n ] [ -c ] [ -l ] [ -a argv0 ] { prog1... } prog2...
 -  tryexec reads prog1... in a
block. It then executes into it,
completely forgetting prog2... 
-  If for some reason the execve() fails - for instance,
a non-executable prog1 - then tryexec executes
into prog2... instead. 
 Options 
 -  -n : reverse prog1... and prog2...'s
role. The latter becomes the main execution path and the former becomes
the fallback. 
  The -c, -l and -a options have the same
semantics as with the exec program.
 Notes 
 -  tryexec prog1... "" prog2... would be
equivalent to
sh -c 'exec prog1... || exec prog2...', if
such a shell construct existed. Unfortunately, the shell language does
not offer that functionality.