Differences

This shows you the differences between two versions of the page.

Link to this comparison view

sh [2014/09/26 14:57]
sh [2014/09/26 14:57] (current)
Line 1: Line 1:
 +====== #!/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 ==
 +
 +<​code>​
 +echo test 2> /dev/null
 +</​code>​
 +
 +== Redirect stderr to stdout ==
 +
 +<​code>​
 +echo test 2>&1
 +</​code>​
 +
 +=== String Comparison ===
 +
 +When checking for string length, include the string in quotes.
 +
 +Both of these will return true:
 +
 +<​code>​
 +[ -n string ]
 +[ -n ]
 +</​code>​
 +
 +This will return false:
 +
 +<​code>​
 +[ -n ""​ ]
 +</​code>​