Used in shell programming to determine parameters within an if statement
–b return True when file exists and is a block file
-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 when file size is larger than 0 o'clock returns true
-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.
UNIX Shell comparison character notation:
-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
-------------------------------------------------------------------------
A more detailed description:
Operator Description Example
File comparison Operators
-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, then true [/tmp/install/etc/services-nt/etc/services]
Filename1-ot filename2 If filename1 is older than filename2, then true [/boot/bzimage-ot Arch/i386/boot/bzimage]
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]
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]
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.
Execute, and view the situation.
# bash-x tijian.sh 60 170
+ weight=60
+ height=170
+ idealweight=60
+ ' [' 60-le 60 '] '
+ echo ' should eat a bit more fat. '
You should eat a bit more fat.
Where-X is used to check the execution of the script.
Shell if detailed