Http://blog.chinaunix.net/uid/21411227/cid-63616-list-1.html
1. Determine the file type
–b Returns True when file exists and is block
-C Returns True when file exists and is a character
-D returns True when pathname exists and is a directory
-E Returns True when a file or directory specified by pathname is present
-F Returns True when file exists and is regular
-G returns True when the file or directory specified by pathname is present and the Sgid bit is set
-H Returns True when file exists and is a symbolic link file, this option is not valid on some old systems
-K returns True when a file or directory specified by pathname exists and the "sticky" bit is set
-P Returns True when file exists and is a command pipeline
-R Returns True when the file or directory specified by pathname is present and readable
-S returns true when file size is greater than 0
-U Returns true when the file or directory specified by pathname is present and the suid bit is set
-W Returns True when the file or directory specified by pathname exists and is executable. A directory must be executable for its content to be accessed.
-O Returns True when the file or directory specified by pathname is present and is owned by the user specified by the active user ID of the current process.
2.UNIX Shell To compare characters:
-eq equals
-ne Not equal to
-GT greater than
-lt less than
-le less than or equal to
-ge greater than or equal to
- z empty string
= Two characters equal
! = two characters unequal
- n non-empty string
-------------------------------------------------------------------------
3. file comparison operators
Operator Description Example
-e filename true if filename exists [-e/var/log/syslog]
-D filename True if filename is a directory [-d/tmp/mydir]
-F filename True if filename is a regular file [-f/usr/bin/grep]
-L filename True if filename is a symbolic link [-l/usr/bin/grep]
-R filename True if filename is readable [-r/var/log/syslog]
-W filename if filename is writable, true [-w/var/mytmp.txt]
-X filename is true if filename is executable [-l/usr/bin/grep]
Filename1-nt filename2 If filename1 is newer than filename2, it is true
Filename1-ot filename2 If filename1 is older than filename2, it is true
4. string comparison operators
(Note the use of quotation marks, which is a good way to prevent whitespace from disturbing the code.)
-Z String True if string length is zero [-Z $myvar]
-N String if string length is nonzero, true [-N $myvar]
string1 = string2 true if string1 is the same as string2 [$myvar = one of the three]
String1! = string2 true if string1 is different from string2 [$myvar! = one, three]
5. Arithmetic comparison operators
Num1-eq num2 equals [3-eq $mynum]
Num1-ne num2 Not equal to [3-ne $mynum]
Num1-lt num2 less than [3-lt $mynum]
Num1-le num2 less than or equal to [3-le $mynum]
NUM1-GT num2 greater than [3-GT $mynum]
Num1-ge num2 greater than or equal to [3-ge $mynum]
6. Script Example:
#!/bin/bash
# This script prints a message about your weight if you give it your
# Weight in kilos and hight in centimeters.
if [! $# = = 2]; Then
echo "Usage: $ Weight_in_kilos length_in_centimeters"
Exit
Fi
Weight= "$"
Height= "$"
idealweight=$[$height-110]
If [$weight-le $idealweight]; Then
echo "You should eat a bit more fat."
Else
echo "You should eat a bit more fruit."
Fi
# weight.sh 70 150
You should eat a bit more fruit.
# weight.sh 70 150 33
Usage:./weight.sh Weight_in_kilos Length_in_centimeters
The positional parameters are $ #代表了命令行的参数数量, $,..., $N, and $ -a represents the name of the script,
The first parameter represents $ $, the second parameter represents $ $, and so on, the total number of parameters exists in $ #中, the example above shows how to change the script, if the parameter is less than or 2 extra to print out a message.
Used in shell programming to determine parameters within an if statement