====== #!/bin/sh ====== * [[bash]] * [[csh]] * [[ksh]] * [[tcsh]] * [[zsh]] * [[http://www.bo.infn.it/alice/alice-doc/mll-doc/impgde/node5.html|Bourne shell programming]] * [[http://www.mcsr.olemiss.edu/unixhelp/shell/oview1.1.html|Summary of shell facilities]] * [[http://mywiki.wooledge.org/SignalTrap|Capturing signal traps]] ''sh'' uses different syntax for operators than ''bash''. Use ''-o'' for or in place of ''||'' and ''-a'' for and in place of ''&&''. == Shell Symbols == * **$1..$9** - arguments * **$0** - process name * **$#** - number of arguments * **$?** - exit status * **$$** - PID of this shell * **$!** - PID of the last background command * **$-** - option supplied at shell call (?) * **$*** - all arguments * **$@** - all arguments with quotes == Conditional Statements == * **-a** and (has higher precedence than -o) * **-o** or == String Operators == * **=** or **==** equal to * **-n** string is not null * **-z** string is null, that is, has zero length == Numeric Operators == * **-eq** number equals * **-ne** number does not equal * **-gt** greater than * **-ge** greater than or equal to * **-lt** less than * **-le** less than or equal to == File Operators == * **-e** file exists * **-f** file is not a directory or device file * **-d** file exists and is a directory * **-h** file exists and is a symlink * **-s** file exists and has a size greater than zero * **-w** file exists and is writeable * **-x** file exists and is executable * **-r** file exists and is readable * **-b** file is a block device * **-c** file is a character device * **-p** file is a pipe * **-S** file is a socket * **-O** you are owner of file * **-G** you are group owner of file == Built-in commands == * **:** - null command * **. file** - execute command in current shell * **read** - assign //var// from //stdin// * **readonly** - mark //var// as read only * **trap** - trap signals * **type** - inidicate how the shell interprets the command * **exec** - execute command in place of current shell without creating a new process * **hash** - rehash command table == Redirect stderr == echo test 2> /dev/null == Redirect stderr to stdout == echo test 2>&1 === String Comparison === When checking for string length, include the string in quotes. Both of these will return true: [ -n string ] [ -n ] This will return false: [ -n "" ]