| & | Run the previous command in the background | ls & |
| && | Logical AND | if [ “$foo” -ge “0” ] && [ “$foo” -le “9”] |
| x|| | Logical OR | if [ “$foo” -lt “0” ] || [ “$foo” -gt “9” ] |
| ^ | Start of line | grep “^foo” |
| $ | End of line | grep “foo$“ |
| = | String equality (cf. -eq) | if [ “$foo” = “bar” ] |
| ! | Logical NOT | if [ “$foo” != “bar” ] |
| $$ | PID of current shell | echo “my PID = $$” |
| $! | PID of last background command | ls & echo “PID of ls = $!” |
| $? | exit status of last command | ls ; echo “ls returned code $?” |
| $0 | Name of current command (as called) | echo “I am $0” |
| $1 | Name of current command’s first parameter | echo “My first argument is $1” |
| $9 | Name of current command’s ninth parameter | echo “My ninth argument is $9” |
| $@ | All of current command’s parameters (preserving whitespace and quoting) | echo “My arguments are $@” |
| $* | All of current command’s parameters (not preserving whitespace and quoting) | echo “My arguments are $*“ |
| -eq | Numeric Equality | if [ “$foo” -eq “9” ] |
| -ne | Numeric Inquality | if [ “$foo” -ne “9” ] |
| -lt | Less Than | if [ “$foo” -lt “9” ] |
| -le | Less Than or Equal | if [ “$foo” -le “9” ] |
| -gt | Greater Than | if [ “$foo” -gt “9” ] |
| -ge | Greater Than or Equal | if [ “$foo” -ge “9” ] |
| -z | String is zero length | if [ -z “$foo” ] |
| -n | String is not zero length | if [ -n “$foo” ] |
| -nt | Newer Than | if [ “$file1” -nt “$file2” ] |
| -d | Is a Directory | if [ -d /bin ] |
| -f | Is a File | if [ -f /bin/ls ] |
| -r | Is a readable file | if [ -r /bin/ls ] |
| -w | Is a writable file | if [ -w /bin/ls ] |
| -x | Is an executable file | if [ -x /bin/ls ] |
| (…) | Function definition | function myfunc() { echo hello } |